层序遍历(需要知道层数)
每次把当前层的所有节点加入另一个队列
当当前队列没有元素时切换到另一个队列,然后另一个队列初始化
import java.util.*;
public class Solution {
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
if (root == null) return new ArrayList<ArrayList<Integer>>();
Queue<TreeNode> queue = new LinkedList<>();
Queue<TreeNode> queue2 = new LinkedList<>();
queue.add(root);
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
ArrayList<Integer> arr = new ArrayList<>();
while(!queue.isEmpty()) {
TreeNode t = queue.poll();
arr.add(t.val);
if (t.left != null) queue2.add(t.left);
if (t.right != null) queue2.add(t.right);
if (queue.isEmpty()) { //当当前队列为空
queue = queue2; //切换到另一个队列
queue2 = new LinkedList<>(); //另一个队列初始化
res.add(arr);
arr = new ArrayList<>();
}
}
return res;
}
}


京公网安备 11010502036488号