劍指Offer:從上往下打印二叉樹
題目描述
從上往下打印出二叉樹的每個節點,同層節點從左至右打印。
題目分析
這道題主要是隊列的應用,我們首先要了解,隊列是先進先出,我們把第一層即根節點放入隊列中,先打印的就是根節點,接着放入第二層及根節點的孩子節點,所以後打印的就是第二次的節點,接着第三層....
這不是正好滿足題目所說的從上到下嗎,至於從左至右,我們先加入左節點,再加入右節點,就完事了!
Java題解
import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Queue; public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> result = new ArrayList<>(); if(root == null) return result; Queue<TreeNode> queue = new ArrayDeque(); queue.add(root); while (!queue.isEmpty()){ TreeNode node = queue.poll(); result.add(node.val); if(node.left!=null) queue.add(node.left); if(node.right!=null) queue.add(node.right); } return result; } } /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */