Leetcode 104二进制树的最大深度



我正在审查这个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));
};

最新更新