描述
不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数组里面,返回。
数据范围:
0<=节点总数<=1000
-1000<=节点值<=1000
示例:
输入:
{8,6,10,#,#,2,1}
返回值:
[8,6,10,2,1]
输入:
{5,4,#,3,#,2,#,1}
返回值:
[5,4,3,2,1]
解:这道题考察的是层次遍历。采用队列的先进先出方式遍历。
public static ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> result = new ArrayList<>();
if(root == null){
return result;
}
Queue<TreeNode> queue = new ArrayDeque<>();
queue.offer(root);
while (!queue.isEmpty()){
TreeNode value = queue.poll();
result.add(value.val);
if(value.left!=null){
queue.add(value.left);
}
if(value.right!=null){
queue.add(value.right);
}
}
return result;
}