原问题:计算整棵树的最大深度
子问题:计算左子树(右子树)的最大深度
子问题和原问题是相似的,子问题需要把计算结果返还给上一级问题
思考整棵树和根节点左右子树的关系:
整棵树的最大深度=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;
}
}