Scala面试算法题:求树的最大深度

首先把题目要求放在这里:

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

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

说明: 叶子节点是指没有子节点的节点。
 图示树状结构:
  
  3
   / \
  9  20
    /  \
   15   7

本道题大眼一看,明白了~绝对是利用递归计算,这道题在力扣上难度为简单,虽然简单但是极为不平凡,如果对递归不熟悉的同学,可能就会绕晕了,下面是博主给出的代码,三行完事

object Solution {
    def maxDepth(root: TreeNode): Int = {
        if(root == null) return 0
        Math.max(maxDepth(root.left) + 1 , maxDepth(root.right) + 1)
    }
}

其实各位不明白的同学调理清楚思路也就很明白了,不过力扣上的其它大神的写法都是基本类似的,像这种递归题目确实不难(放在简单题目中也是理所应当~)
下面给出博主的思路,大家有兴趣的可以多做些相关的题目:

  1. 求一颗数的最大深度,那么我只需要获取到左子树和右子树的最大深度即可
  2. 递归问题就是不断在缩小计算范围,直到root == null的情况下,不断返回给调用者即可

下面给出本道题目的计算时间和内存消耗情况:(忘记截图) 在力扣官方给出的所有测试用例中速度在500ms左右,内存损耗为50Mb
如果各位同学有更好的思路或者有更好的题目,可在评论区留言分享

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值