迭代法的话就是 用好 队列queue的poll offer
public static List<List<Integer>> levelOrder(TreeNode root){
ArrayList<List<Integer>> result = new ArrayList<>();
Deque que= new LinkedList();
if(root==null) return result;
TreeNode cur = root;
que.offer(cur);
while(!que.isEmpty()) {
ArrayList<Integer> subList = new ArrayList<>();
int len= que.size();// 本层长度固定的
for(;len>0;len--) {
TreeNode tmp = (TreeNode) que.poll();
subList.add(tmp.val);
if(tmp.left!=null) {
que.offer(tmp.left);
}
if(tmp.right!=null){
que.offer(tmp.right);
}
}
result.add(subList);
}
return result;
}
该代码使用迭代法和队列实现二叉树的层次遍历。首先创建一个队列并将根节点入队,然后在循环中每次处理一层的节点,将节点值添加到当前层的列表中,并将子节点入队,直到队列为空。最后返回所有层次的节点列表。
847

被折叠的 条评论
为什么被折叠?



