二叉树
在二叉树递归时,一开始不要在意细节,而是考虑整颗树与左右子树的区别,例如二叉树的最大深度这一问题中:
原问题:计算整颗树的最大深度
子问题:计算左/右子树的最大深度
子问题与原问题是相似的
相比于循环,只不过递归是将计算结果返回到上一级问题,依次"递"下去,所以需要有个边界条件停止这一过程,那么就会有一个"归"的过程,一步一步返回给上一级,最终得到正确答案。
js
var calculateDepth = function(root) {
if(!root){
return 0
}
let left=calculateDepth(root.left)
let right=calculateDepth(root.right)
return Math.max(left,right)+1
};