通过求二叉树最大深度来理解递归

原问题:计算整棵树的最大深度

子问题:计算左子树(右子树)的最大深度

子问题和原问题是相似的,子问题需要把计算结果返还给上一级问题

思考整棵树和根节点左右子树的关系:

整棵树的最大深度=max(根节点左子树的最大深度,根节点右子树最大树)+1

从原问题出发,把问题不断分解成更小的子问题,由于子问题的规模比原问题小,所以不断的分解总会有个尽头,也就是递归的边界条件base case,到达边界条件就要返回答案

大问题分解成小问题就是递,小问题的答案传给大问题就是归

这个问题里的边界条件就是小问题是空节点,直接返回0

class Solution
{
    public int maxDepth(TreeNode  root)
    {
       if(root==null)  return 0;
       int left=maxDepth(root.left);
       int right=maxDepth(root.right);
   
       return Math.max(left,right)+1;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值