题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路
二叉树的层序遍历,借助一个队列实现。
代码
public class Solution22 {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> arr=new ArrayList<>();
if(root==null)
return arr;
Queue<TreeNode> queue = new LinkedList<>();
TreeNode currentNode ;
queue.offer(root);
while (!queue.isEmpty()) {
currentNode = queue.poll();
if (currentNode.left != null)
queue.offer(currentNode.left);
if (currentNode.right != null)
queue.offer(currentNode.right);
arr.add(currentNode.val);
}
return arr;
}
public static void main(String[] args) {
int[] a={1,5,7,11,43,12,45,32,23,9,21};
TreeNode tree= BeanUtil.createCompleteBinaryTree(a);
BeanUtil.print(tree,tree.val,0);
BeanUtil.printArr(new Solution22().PrintFromTopToBottom(tree));
}
}