22、从上往下打印二叉树

一、题目

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

二、解法

 1 import java.util.ArrayList;
 2 import java.util.LinkedList;
 3 import java.util.Queue;
 4 /**
 5 public class TreeNode {
 6     int val = 0;
 7     TreeNode left = null;
 8     TreeNode right = null;
 9 
10     public TreeNode(int val) {
11         this.val = val;
12 
13     }
14 
15 }
16 */
17 public class Solution {
18   public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
19          /*ArrayList<Integer> ls = new ArrayList<Integer>();
20          if(root == null)
21              return ls;
22          Queue<TreeNode> queue = new LinkedList<TreeNode>();
23          queue.offer(root);//入队
24          while(!queue.isEmpty()){
25              TreeNode tn = queue.poll();//出对
26              ls.add(tn.val);//保存值
27              if(tn.left != null)
28                  queue.offer(tn.left);//入队
29              if(tn.right != null)
30                  queue.offer(tn.right);//出对
31          }
32          return ls;*/
33       ArrayList<Integer> al = new ArrayList<Integer>();
34       if(root == null)
35             return al;
36         Queue<TreeNode> tn = new LinkedList<TreeNode>();
37         tn.offer(root);
38         while(!tn.isEmpty()){
39             TreeNode tree = tn.poll();
40             al.add(tree.val);
41             if(tree.left != null)
42                 tn.offer(tree.left);
43             if(tree.right != null)
44                 tn.offer(tree.right);
45         }
46         return al;    
47       }
48 }

 

posted @ 2017-08-30 11:17  fankongkong  阅读(126)  评论(0编辑  收藏  举报