描述
不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数组里面,返回。
数据范围:
0<=节点总数<=1000
-1000<=节点值<=1000
我的思路
一开始觉得挺简单,结果代码刚敲完就进入死循环。
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
if (root == null)
return new ArrayList<>();
ArrayList<Integer> arrayList = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()){
if (root.left != null)
queue.add(root.left);
if (root.right != null)
queue.add(root.right);
arrayList.add(queue.poll().val);
}
return arrayList;
}
这题很简单的,就是我脑子不清醒,可能睡眠太少了。
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
if (root == null)
return new ArrayList<>();
ArrayList<Integer> arrayList = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (queue.size() != 0){
TreeNode node = queue.poll();
if (node.left != null)
queue.add(node.left);
if (node.right != null)
queue.add(node.right);
arrayList.add(node.val);
}
return arrayList;
}