剑指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      }

 

posted @ 2018-09-05 16:02  轻抚丶两袖风尘  阅读(86)  评论(0)    收藏  举报