題目描述:
給你一個二叉樹,請你返回其按 層序遍歷 得到的節點值。 (即逐層地,從左到右訪問所有節點)。
示例:
二叉樹:[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其層次遍歷結果:[[3], [9,20], [15,7]]
JavaScript實現:
乘熱打鐵,第5題的用bfs實現,稍微改進下就是下列代碼。思路看5的BFS吧
時間復雜度:每個點進隊出隊各一次,故漸進時間復雜度為 O(n)O(n)。
空間復雜度:隊列中元素的個數不超過 nn 個,故漸進空間復雜度為 O(n)O(n)。
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {number[][]} */ var levelOrder = function(root) { if(!root) return []; let queue = [root]; let res = []; while(queue.length){ let temp = [] let queueLength = queue.length; while(queueLength) { let node = queue.shift(); node.left && queue.push(node.left); node.right && queue.push(node.right) queueLength--; temp.push(node.val); } res.push(temp); } return res };
Java實現:
待補充