- 题目
从上往下打印出二叉树的每个节点,同层节点从左至右打印。 - 思路
- 借助队列,首先将树的根节点放入队列中
- 然后判断队列是否为空,若队列不为空,弹出队头元素,将队头元素的值放入链表中
- 然后判断弹出的队头元素,是否有左右子节点。若有左右子节点,则将左右子节点继续入队。
- 重复上述循环,直至队列为空。
- 代码
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> arrayList = new ArrayList<Integer>();
if(root == null){
return arrayList;
}
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(root);
while(!queue.isEmpty()){
TreeNode treeNode = queue.poll();
arrayList.add(treeNode.val);
if(treeNode.left != null){
queue.offer(treeNode.left);
}
if(treeNode.right != null){
queue.offer(treeNode.right);
}
}
return arrayList;
}