剑指Offer第十四题:从上往下打印二叉树
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
题目分析
这个算法我们需要借助一个队列来帮忙实现。我们先让头结点进入队列中,然后遍历队列,如果在遍历的过程中该节点的左右节点不为空,那么我们将左右节点依次加入队列。
算法分析
定义一个队列用来存储节点。在我们遍历节点的同时,将不为空的左右子树的节点加入队列中。我们可以借用ArrayList实现,因为他是一个数组队列,满足要求。详细介绍:JAVA集合ArrayList总结
源代码
1 public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { 2 ArrayList<TreeNode> treeList=new ArrayList<>(); 3 ArrayList<Integer> res=new ArrayList<>(); 4 if(root==null){ 5 return res; 6 } 7 8 treeList.add(root); 9 10 for(int i=0;i<treeList.size();i++) { 11 res.add(treeList.get(i).val); 12 if(treeList.get(i).left!=null) { 13 treeList.add(treeList.get(i).left); 14 } 15 if(treeList.get(i).right!=null) { 16 treeList.add(treeList.get(i).right); 17 } 18 } 19 return res; 20 21 }