我正在审查此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)
就“激活”它呢?
答案 0 :(得分:1)
解决方案包括“递归”,这意味着maxNode
函数在其内部多次被调用。这需要maxNode
函数向其调用的“实例”返回一个值。
maxDepth
函数具有return语句,用于返回计算出的maxNode值。
答案 1 :(得分:1)
这是递归函数的另一种构造,它以sum
作为递归的参数。
可以很容易地将其重写为以下函数,在函数调用之外添加一个。
var maxDepth = function(node) {
if (!node) return 0;
return 1 + Math.max(maxNode(node.left), maxNode(node.right));
};
答案 2 :(得分:0)
此函数maxDepth
将确定二叉树的最大深度。
您将像这样使用它:
let depth = maxDepth(treeRoot);
在没有return
的情况下,该函数将确定深度,但是调用该函数时不会得到结果。