1. 程式人生 > >【劍指offer】廣度優先遍歷二叉樹

【劍指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 }