從上往下打印出二叉樹的每一個節點,同層節點從左至右打印java
深度優先算法是一種圖形搜索算法。簡單的說,BFS是從根節點開始,沿着樹(圖)的寬度遍歷樹(圖)的節點。若是全部節點均被訪問,則算法停止。通常用隊列數據結構來輔助實現BFS算法。算法
1. 首先將根節點放入隊列中。
2. 從隊列中取出第一個節點,並檢驗它是否爲目標。
若是找到目標,則結束搜尋並回傳結果。
不然將它全部還沒有檢驗過的直接子節點加入隊列中。
3. 若隊列爲空,表示整張圖都檢查過了——亦即圖中沒有欲搜尋的目標。結束搜尋並回傳「找不到目標」。
4. 重複步驟2數據結構
public ArrayList<Integer> printFromTopToBottom(TreeNode root) { if (root == null) return new ArrayList<Integer>(); ArrayList<Integer> list = new ArrayList<Integer>(); ArrayDeque<TreeNode> queue = new ArrayDeque<TreeNode>(); // 首先將根節點放入隊列中 queue.offer(root); while (!queue.isEmpty()) {// 隊列不空,還有節點未搜索 // 根節點出隊 TreeNode current = queue.poll(); // 將根節點放入結果集中 list.add(current.val); if (current.left != null) {// 左節點不空,先搜索左節點 // 先將左節點放入隊列 queue.offer(current.left); } if (current.right != null) {// 右節點不空,搜索右節點 // 再將右節點放入隊列 queue.offer(current.right); } } return list; } public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } }