【发布时间】:2021-04-23 02:44:36
【问题描述】:
var maxDepth = function(root) {
const recursion = (n) => {
if (!n) return 0;
let left = recursion(n.left)
let right = recursion(n.right)
return left > right ? left + 1 : right + 1
}
return recursion(root)
};
调用递归函数时,它是如何记数的?我见过很多其他方法来找到二叉树的最大深度,并且所有递归函数都可以自己计算。谁能解释一下这是如何工作的?函数调用加 1 是如何工作的?
这是另一种搜索方法
maxDepth() {
if (!this.root) return 0;
function maxDepthHelper(node) {
if (node.left === null && node.right === null) return 1;
if (node.left === null) return maxDepthHelper(node.right) + 1;
if (node.right === null) return maxDepthHelper(node.left) + 1;
return (
Math.max(maxDepthHelper(node.left), maxDepthHelper(node.right)) + 1
);
}
return maxDepthHelper(this.root);
}
这是二叉树类方法的一部分
【问题讨论】:
-
您所说的“它是如何计数的?”是什么意思?它只计算递归调用级别。
标签: javascript recursion binary-tree recursive-datastructures