【发布时间】:2019-01-25 23:40:03
【问题描述】:
为了得到nary-tree的最大深度,下面这段代码是正确的答案。
var maxDepth = function(root) {
if (!root) {
return 0
}
let depth = 0;
let arr=[root];
while (arr.length) {
let arrlength=arr.length;
for (let i=0;i<arrlength;i++) {
let curr=arr.shift();
arr.push(...curr.children);
}
depth++;
}
return depth;
};
但是,如果我在 for 循环中使用 arr.length 而不是使用“let arrlength=arr.length;”并使用arrlength,这将是一个错误的答案...... 我可以知道为什么吗?我说不出有什么区别。非常感谢!
var maxDepth = function(root) {
if (!root) {
return 0
}
let depth = 0;
let arr=[root];
while (arr.length) {
for (let i=0;i<arr.length;i++) {
let curr=arr.shift();
arr.push(...curr.children);
}
depth++;
}
return depth;
};
可以在这里测试: https://leetcode.com/problems/maximum-depth-of-n-ary-tree/
【问题讨论】:
-
arr.shift()改变数组的长度。 -
这是呼吸第一。
标签: javascript algorithm data-structures tree breadth-first-search