题目描述:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路;
1、利用一个队列来记录二叉树的所有节点,每次访问之后都将该节点的子节点,插入到队列当中;
2、每次取队列的对首元素;并弹出队列;压入list;
3、直到队列为空,将结果返回;
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> list = new ArrayList<Integer>();
Deque<TreeNode> queue = new ArrayDeque<TreeNode>();
if(root == null){
return list;
}
queue.add(root);
while(!queue.isEmpty()){
TreeNode temp = queue.poll();
list.add(temp.val);
if (temp.left != null) {
queue.add(temp.left);
}
if (temp.right != null) {
queue.add(temp.right);
}
}
return list;
}