亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【學習打卡】第14天 數據結構和算法

二叉树的最大深度(leetcode - 104)

给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。

思路 (深度优先遍历)

  1. 声明变量deep记录节点的最大深度
  2. 深度优先遍历整棵树,并记录每个节点的层级,不断刷新deep
var maxDepth = function(root) {
    let deep = 0;

    const dfs = (n, l) => {
        if(!n) return;
        if(!n.left && !n.right) {
            deep = Math.max(deep, l)
        }
        
        if(n.left) dfs(n.left, l+1)
        if(n.right) dfs(n.right, l+1)
    }
    dfs(root, 1)

    return deep;
};
// leetcode官方
var maxDepth = function(root) {
    if(!root) {
        return 0
    }else{
        const leftHeight = maxDepth(root.left);
        const rightHight = maxDepth(root.right);
        return Math.max(leftHeight, rightHight) + 1
    }
};

思路 (广度优先遍历)

  1. 声明一个栈stack和最大深度deep
  2. 把第一层级的节点(根节点)入栈
  3. 把第一层级的节点全部出栈,deep加1
  4. 把下一层级的节点入栈
  5. 把下一层级的节点全部出栈,deep加1
  6. 重复4、5步骤,直至stack为空,得到最大的deep
var maxDepth = function(root) {
    if(!root) {
        return 0;
    }
    const stack = [root];
    let deep = 0;
    while(stack.length){
        let len = stack.length;
        while(len > 0) {
            let n = stack.shift();
            if(n.left) stack.push(n.left);
            if(n.right) stack.push(n.right);
            len--
        }
        deep++;
    }
    return deep;
};
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
Web前端工程師
手記
粉絲
3
獲贊與收藏
9

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消