为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第13天 数据结构之“树”

标签:
JavaScript

课程名称:JavaScript版数据结构与算法
课程章节:第8章 数据结构之“树”
主讲老师:lewis

课程内容:

今天学习的内容包括:
8-5 LeetCode:104. 二叉树的最大深度——基于深度优先遍历获取二叉树的最大深度。
8-6 LeetCode:111. 二叉树的最小深度——基于广度优先遍历获取二叉树的最小深度。

课程收获:

二叉树的最大深度

1、为了更好的理解二叉树的最大深度获取方法,在这里先复习下深度优先遍历:尽可能的搜索树的分支,对子节点按哥进行深度优先遍历,直至无节点。
2、因此我们在二叉树进行深度优先遍历时,获取到最大的层数就可以了,也就是最大深度。

var maxDepth = function(root) {
    let res = 0
    const dfs = (n,l) =>{
        if(!n) return
        if(!n.left && !n.right){
            res = Math.max(res,l)
        }
        dfs(n.left,l+1)
        dfs(n.right,l+1)
    }
    dfs(root,1)
    return res
};

二叉树的最小深度

1、为了更好的理解二叉树的最小深度获取方法,在这里先复习下广度优先遍历:基于队列的先进先出,把子节点挨个入队,然后出队。
2、因此我们在二叉树进行广度优先遍历时,当出队的节点无子节点时,返回当前的层级就可以了,也就是最小深度。

var minDepth = function(root) {
    if(!root) return 0
    let q = [[root,1]]
    while(q.length){
        const [n,l] = q.shift()
        if(!n.left && !n.right){
            return l
        }
        if(n.left) q.push([n.left,l+1])
        if(n.right) q.push([n.right,l+1])
    }
};

今天重新看了下昨天的先中后序的算法,通过堆栈实现,理解了,感觉很快就会忘掉,今天学习了二叉树的最大深度、最小深度,是基于前天学习的深度广度优先遍历实现,由此可见算法是持续性的,需要不断学习,也需要不断复习,不断的实践,对自己说一句,加油😀~

坚持打卡,坚持学习!明天见💪~

​​​​https://img1.sycdn.imooc.com//62fb53250001504b22861226.jpg

https://img1.sycdn.imooc.com//62fb59fa00016c7c22861226.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消