列印一棵二叉樹,要求從上往下列印,每一層從左往右列印
阿新 • • 發佈:2019-01-29
思路:在二叉樹的遍歷中,用得最多的就是遞迴,二叉樹的先序、中序、後序遍歷都可以用遞迴實現,但是這裡卻要使用另外一種方式解決。利用佇列先入先出的特性,我們先把二叉樹每一層的節點按從左往右的順序加入佇列,然後再讓佇列中的所有節點依次出棧並列印節點值,此時得到的就是所需的結果。程式碼如下:
import java.util.ArrayList; import java.util.Queue; import java.util.LinkedList; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> list = new ArrayList<>(); if(root==null){ return list; } Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); while(!queue.isEmpty()){ TreeNode node = queue.poll(); list.add(node.val); if(node.left!=null){ queue.offer(node.left); } if(node.right!=null){ queue.offer(node.right); } } return list; } }