牛客链接

思路:
1 .初始化:一个队列Queue< TreeNode > queue, 将root节点入队列queue
第一次size = 1,

2. 如果队列不空,做如下操作:

注意每次进入循环时,先获取到队列里元素的个数,即queue.size();
第,二次进去时,size为2,

- 弹出队列头,保存为,将cur的左右非空孩子加入队列
循环2,3步骤,直到队列为空
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> list = new ArrayList<Integer>();
if(root == null){
return list;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size();
while(size!=0){
TreeNode cur = queue.poll();
list.add(cur.val);
if(cur.left != null){
queue.offer(cur.left);
}
if(cur.right != null){
queue.offer(cur.right);
}
size --;
}
}
return list;
}
}
哪里不明白,可以私聊我
本文介绍如何进行二叉树的层序遍历,主要思路是使用队列来辅助操作。首先将根节点入队,然后在循环中每次获取队列的大小,弹出队列头部节点并将其非空的孩子节点加入队列,直至队列为空。对于不理解的部分,作者提供私聊解答。
&spm=1001.2101.3001.5002&articleId=119428339&d=1&t=3&u=d184f80e5e7a4f83903ef526fdaf4855)
2536

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



