[LeetCode 104.二叉树的最大深度] 刷题打卡

371 阅读2分钟

一、题目描述(javascript解题):

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例: 给定二叉树 [3,9,20,null,null,15,7]

返回它的最大深度为3

二、思路分析

这里我想到的是递归思想,我们知道二叉树是有左子树和右子树的,如果我们知道了左子树left和右子树right的最大深度 lr,那么该二叉树的最大深度即为max(l,r),而左子树和右子树的最大深度可以以同样的方式进行计算从而获得。因此我们在 计算当前二叉树的最大深度时,可以先递归计算出其左子树和右子树的最大深度,然后再返回当前二叉树的最大深度

实现代码如下

var maxDepth = function  (root){
    if(root==null){
        return 0;
    }else{
        let left = maxDepth(root.left);
        let right = maxDepth(root.right);
        return Math.max(left,right)+1;
    }
}

而后我想着能不能优化下代码,当然我使用的还是递归思想,如果当前的节点为空,则直接返回深度;如果不为空,那么递归其左右节点,再选择左右节点中最大的那个+1。

实现代码如下

var maxDepth = function  (root) {
    if(root==null){
        return 0
    }
    return Math.max(maxDepth(root.left),maxDepth(root.right))+1
}

两组代码的运行比较

三、总结

该题考查的是算法思想中二叉树的相关知识,也是我们需要多加理解的地方,本题的解法思路有多种,而本人选择了自己最了解的一种思路去求解,自己也会不断去学习,加强自身的算法能力,如果还有其他解法,欢迎各位大佬评论区讨论

最后

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 juejin.cn/post/693314…