LeetCode 102. 二叉樹的層序遍歷 Java
阿新 • • 發佈:2020-07-25
這個層序遍歷要求返回每層的節點,正常的BFS從佇列中彈出一個節點後就判斷其有沒有左子樹和右子樹,所以直接用BFS實現的話無法分層輸出。
需要記錄每層的節點數目,增加一個for迴圈就可以了。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public List<List<Integer>> levelOrder(TreeNode root) { Queue<TreeNode> queue = new ArrayDeque<>(); List<List<Integer>> nodes = new ArrayList<>(); if(root != null){ queue.add(root); } while(!queue.isEmpty()){ int n = queue.size(); List<Integer> list = new ArrayList<>(); for(int i=0;i<n;i++){//先輸出一整層節點 TreeNode node = queue.poll(); list.add(node.val); if(node.left != null){ queue.add(node.left); } if(node.right != null){ queue.add(node.right); } } nodes.add(list); } return nodes; } }