采用递归编写程序能使程序变得简洁和清晰.可能须要不少步骤才能解出来的题目,用递归一行代码就能解决.code
一、找到递归的终止条件:递归应该在何时结束?blog
二、找到返回值:应该给上一级返回什么信息?递归
三、本级递归应该作什么:在这一级递归中应该完成什么任务?leetcode
看leetcode104题:求二叉树的最大深度 直接套用递归三部曲:get
一、找终止条件:当树为空,树的深度就为0,此时递归就结束了.博客
二、找到返回值:应该返回什么?题目要求咱们返回树的最大深度,最大深度一定出如今左子树或右子树中.那么返回值就应该是当前树的最大深度.class
三、本级递归应该作什么:首先,仍是强调要走出以前的思惟误区,递归后咱们眼里的树必定是这个样子的,看下图。此时就三个节点:root、root.left、root.right,其中根据第二步,root.left和root.right分别记录的是root的左右子树的最大深度。那么本级递归应该作什么就很明确了,天然就是在root的左右子树中选择较大的一个,再加上1就是以root为根的子树的最大深度了,而后再返回这个深度便可。二叉树
参考博客:参考博客程序