我正在审查这个leetcode问题的解决方案。解决方案如下:
var maxDepth = function(root) {
let maxNode = (node, sum) => {
if (node === null) {
return sum;
}
return Math.max(maxNode(node.left, sum + 1), maxNode(node.right, sum + 1));
}
return maxNode(root, 0);
};
我想知道为什么return maxNode(root, 0);
必须包含return
。是否需要"激活"内部功能?如果是这样,为什么仅仅maxNode(root, 0)
就不能"激活"它呢?
该解决方案包括"递归";,这意味着CCD_ 4函数在其内部被多次调用。这需要CCD_ 5函数向其调用的"返回一个值;实例";。maxDepth
函数有一个返回语句,用于返回计算出的maxNode值。
此函数maxDepth
将确定二叉树的最大深度。
你会这样使用它:
let depth = maxDepth(treeRoot);
如果没有return
,函数将确定深度,但在调用函数时不会得到结果。
它是递归函数的另一种构造,将sum
作为递归的参数。
它可以很容易地重写为下面的函数,其中添加一个是在函数调用之外。
var maxDepth = function(node) {
if (!node) return 0;
return 1 + Math.max(maxNode(node.left), maxNode(node.right));
};