版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangvalue/article/details/87904244
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:
使用一个ArrayList的队列来模拟接收相应的二叉树打印节点的信息
import java.util.ArrayList;
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
//创建一个list用来接收需要打印的节点的val
ArrayList<Integer> list= new ArrayList<>();
//创建一个queue来辅助打印节点的顺序
ArrayList<TreeNode> queue =new ArrayList<>();
if(root==null){
return list;
}
//首先将二叉树的根节点传入到辅助队列中
queue.add(root);
//循环结束的条件队列为空
while(queue.size()!=0){
//ArrayList 的remove是删除该节点并将该节点返回
TreeNode temp = queue.remove(0);
if(temp.left!=null){
queue.add(temp.left);
}
if(temp.right!=null){
queue.add(temp.right);
}
list.add(temp.val);
}
return list;
}
}