题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路
- 打印根节点0,然后打印左右节点(1和2),接着打印左节点1的左右节点(3和4),接着打印右节点2的左右节点(5和6)
- 可以一个辅助的队列保存住先后关系(1 2 3 4 5 6)
- 取出一个节点,他的左右孩子就入队列。
- 终止的条件是辅助队列为空。
代码
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> list=new ArrayList<>();
if(root==null){
return list;
}
//1.建立一个辅助队列
Deque<TreeNode> deque=new LinkedList<TreeNode>();
//2.首先把根节点放入队列,取出一个父亲,放入两个孩子
deque.add(root);
//3.对辅助队列的入队列和出队列的操作终止条件是队列为空
while(!deque.isEmpty()){
//4.取出一个父亲,添加两个孩子
TreeNode t=deque.pop();
list.add(t.val);
if(t.left!=null){
deque.add(t.left);
}
if(t.right!=null){
deque.add(t.right);
}
}
return list;
}
}