都知道这个宽度优先的方式,但是这里比较奇怪的是要知道每一层要有哪些具体的数字。我们一般的情况下是直接往队列里放就是了,但是这里这样处理
public class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
if (root == null) {
return result;//这里为什么不返回null,因为,。,。测试样例要这样,。,提交了两次。
}
Queue<TreeNode> myQueue = new LinkedList<>();
Queue<TreeNode> myQueue1 = new LinkedList<>();
myQueue.add(root);
while (myQueue1.isEmpty() && !myQueue.isEmpty()) {
List<Integer> item = new ArrayList<>();
while (!myQueue.isEmpty()) {
TreeNode node = myQueue.poll();
item.add(node.val);
if (node.left != null) {
myQueue1.add(node.left);
}
if (node.right != null) {
myQueue1.add(node.right);
}
}
result.add(item);
myQueue = new LinkedList<>(myQueue1);
myQueue1.clear();
}
return result;
}
}