递归解题核心思想
1、递归要考虑的三个问题:
- 递归应该在什么时候结束?
- 我应该返回什么信息给上层?
- 在这一次的递归中,要完成什么任务?
递归每一层的功能都是一样的,所以只要解决了这三个问题,递归的问题就解决了
2、举例说明:
2.1、二叉树的最大深度
1、什么时候结束递归?
当遍历到树的左右节点都为空的时候,递归就结束了!
2、返回给上层的是什么?
因为是对树深度的遍历,所以返回给上层的,自然是这颗子树的深度
3、本次递归中,要完成什么任务?
每一次的递归,都是在获取树的深度,可能左右子树都存在,那么自然要返回最高的那颗树的值,同时,要加上1,因为本身的这棵树,也属于一层,当遍历到自身为null的时候,就返回0(不用+1)
4、代码如下:
public int maxDepth(TreeNode root) {
if (root == null){
return 0;
}
int left = maxDepth(root.left