【劍指offer】廣度優先遍歷二叉樹
阿新 • • 發佈:2018-12-01
問題:從上往下打印出二叉樹的每個節點,同層節點從左至右列印。
*思路:先用佇列存放樹的根結點。每次出隊一個結點,將結點非空的左右孩子分別入隊。重複此過程,直到佇列為空。
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 }