二叉樹層級(jí)遍歷

題目: 有二叉樹如下, 按層級(jí)輸出結(jié)果: [[3], [9, 20], [15, 7]]

    3
   / \
  9  20
    /  \
   15   7
/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */

原題鏈接: https://leetcode-cn.com/problems/binary-tree-level-order-traversal/

解法1: 基于DFS

遍歷時(shí),添加第二個(gè)參數(shù),記錄層級(jí)深度

function levelOrder(root) {
    let arr = [];
    if(!root) {
        return []
    }
    function dfs(node, level) {
        if(!arr[level]) {
            arr[level] = [];
        }
        arr[level].push(node.val);

        if(node.left) {
            dfs(node.left, level+1);
        }
        if(node.right) {
            dfs(node.right, level + 1);
        }
    }
    dfs(root, 0);
    return arr;
};

解法2:基于BFS

function bfs(tree) {
    let arr = [];
    let res = [];
    let count  = 0;
    
    arr.push([tree]);

    while(count < arr.length) {
        const nodeArr = arr[count++];
        res.push(nodeArr.map(n => n.val));

        const nextLevelNodes = nodeArr.reduce((prev, cur) => {
            if(cur.left){
                prev.push(cur.left);
            }
            if(cur.right) {
                prev.push(cur.right);
            }
            return prev;
        }, []);

        if(nextLevelNodes.length) {
            arr.push(childNodeArr);
        }
    }
    return res;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容