我们正在尝试从2d数组创建一个树,并想检查该树中是否存在给定节点。
例如 假设我们有这些数组
links = [[0,3],[2,4],[8,5],[9,1],[5,2],[1,5]]
check = [[7,6],[1,2],[8,3],[8,9]]
必须给出结果
[false,true,false,true]
因为
1 and 2 are connected via 5 (1-5-2)
8 and 9 are connected via 5 and 1 (8-5-1-9)
根据我们的说法,我们的逻辑是1-5-2([5,2],[1,5])和8-5-1-9([8,5],[9,1],[ 1,5]是树,它在阵列中相互连接。如果我们可以像这样创建树,那么我们可以解决这个问题。
我为树结构编写了一些代码,但它没有给出正确的结果。
var links = [[0,3],[2,4],[8,5],[9,1],[5,2],[1,5]];
var check = [[7,6],[1,2],[8,3],[8,9]];
console.log(links.join(",").split(","));
var p, temp = {};
var test={};
var result={};
for (var i=links.join(",").split(",").length; i--; ) {
p = links.join(",").split(",")[i];
temp[p] = (p in temp) ? temp[p]+1 : 1;
}
for(key in temp){
if(temp[key]>1){
test[key]=temp[key];
console.log("now greater then 1");
}
}
console.log(test);
for (var index = 0, len = links.length; index < len; index++) {
// console.log(links[index]);
for(key in test){
console.log(key +"----"+links[index]);
if(key in links[index]){
console.log(links[index]);
}else{
console.log("in else");
}
}
}
console.log(temp);