【亡羊補牢】挑戰資料結構與演算法 第51期 LeetCode 102. 二叉樹的層序遍歷(二叉樹)

一百個Chocolate發表於2020-09-25

仰望星空的人,不應該被嘲笑

題目描述

給你一個二叉樹,請你返回其按 層序遍歷 得到的節點值。 (即逐層地,從左到右訪問所有節點)。

示例:

二叉樹:[3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回其層次遍歷結果:

[
  [3],
  [9,20],
  [15,7]
]

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/binary-tree-level-order-traversal
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

解題思路

直接用 BFS,對於每一層初始化空陣列,然後存放每一層的節點值,然後迭代即可。

/**
 * 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 res = [];
    let queue = [root];
    let cnt = 0;
    while (queue.length) {
        let size = queue.length;
        // 每一層初始化一個空陣列
        res.push([]);
        while (size--) {
            let node = queue.shift();
            // 每一層的節點都存著
            res[cnt].push(node.val);
            node.left && queue.push(node.left);
            node.right && queue.push(node.right);
        }
        // 迭代層次
        ++cnt;
    }
    return res;
};

最後

文章產出不易,還望各位小夥伴們支援一波!

往期精選:

小獅子前端の筆記倉庫

leetcode-javascript:LeetCode 力扣的 JavaScript 解題倉庫,前端刷題路線(思維導圖)

小夥伴們可以在Issues中提交自己的解題程式碼,? 歡迎Contributing,可打卡刷題,Give a ⭐️ if this project helped you!

訪問超逸の部落格,方便小夥伴閱讀玩耍~

學如逆水行舟,不進則退

相關文章