描述
不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数组里面,返回。
数据范围:
0<=节点总数<=1000
-1000<=节点值<=1000
示例1
输入:
{8,6,10,#,#,2,1}
返回值:
[8,6,10,2,1]
二叉树的层序遍历,创建一个队列,从根节点开始,将根节点放入队列,然后把队列首出队,将出队的节点的值添加到数组中,然后再判断该节点是否有子节点,有的话也加入队列尾,直到队列为空就遍历完成了
java代码
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
if(root==null)return new ArrayList<Integer>();
ArrayList<Integer> list=new ArrayList<>();
LinkedList<TreeNode> tlist=new LinkedList<>();
tlist.addFirst(root);
while(tlist.size()>0){
TreeNode tn=tlist.removeFirst();
list.add(tn.val);
if(tn.left!=null)tlist.addLast(tn.left);
if(tn.right!=null)tlist.addLast(tn.right);
}
return list;
}