【发布时间】:2021-12-26 04:58:41
【问题描述】:
我有一个数组。
const arr1 = [3, [ 8, [ 5, 4, null], 11], [ 7, [ 1, 0, null], null]]
我想写一个函数,它应该检查给定的值是否在树中。
这是我的功能。
function valueInTree(tree, val) {
if(tree[0] === val || tree[1] === val || tree [2] === val){
return true;
}
if (Array.isArray(tree[1])){
return valueInTree(tree[1],val)
}
if (Array.isArray(tree[2])){
return valueInTree(tree[2],val);
}
return false;
}
console.log(valueInTree(arr1, 72));
下面是给定数组的视觉效果。
// 3
// / \
// 8 7
// /\ /\
// 5 11 1 N
// /\ / \
// 4 72 0 N
所以,我的问题。 如您所见,我的函数无法检查树的右侧。例如,它可以找到数字 3、8、5 和 4。但是当我尝试找到 7 或 11 时,它返回 false。
【问题讨论】:
-
这是一种非常奇怪的存储树的方式
-
如果像例子中一样,第二个和第三个元素都是数组,第一个
if的return总是会出现,第二个不会被检查。
标签: javascript arrays algorithm recursion binary-tree