【剑指offer】广度优先遍历二叉树

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

*思路:先用队列存放树的根结点。每次出队一个结点,将结点非空的左右孩子分别入队。重复此过程,直到队列为空。

 1 import java.util.ArrayList;
 2 /**
 3 public class TreeNode {
 4     int val = 0;
 5     TreeNode left = null;
 6     TreeNode right = null;
 7 
 8     public TreeNode(int val) {
 9         this.val = val;
10 
11     }
12 
13 }
14 */
15 
16 
17 public class Solution {
18     
19     public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
20       ArrayList<TreeNode> queue = new ArrayList<TreeNode>();
21       ArrayList<Integer> result = new ArrayList<Integer>();
22       //非空处理
23       if(root==null){ return result;}
24     //初始化
25       queue.add(root);
26       result.add(root.val);
27       while(!queue.isEmpty()){
28         TreeNode node = queue.remove(0);
29         TreeNode left = node.left;
30         TreeNode right = node.right;
31         if(left!=null){
32             queue.add(left); 
33             result.add(left.val);
34         }
35         if(right!=null){
36             queue.add(right);
37             result.add(right.val);
38         }
39       }
40         return result;
41     }
42 }
原文地址:https://www.cnblogs.com/singular/p/10048952.html