JS 寻找孩子并打印路径

时间:2021-08-15 00:05:29
<!doctype html>
<html lang="en"> <head>
<meta charset="UTF-8">
<title>Document</title>
</head> <body>
<script type="text/javascript">
function createNode(name, children) {
var o = new Object();
o.name = name;
o.children = children;
return o;
}
var a11=createNode('a11',[]);
var a12=createNode('a12',[]);
var a1 = createNode('a1', [a11,a12]);
var a2 = createNode('a2', []); var a = createNode('a', [a1, a2]);
var b11=createNode('b11',[]);
var b12= createNode('b12',[]);
var b1=createNode('b1',[b11,b12]);
var b2=createNode('b2',[]);
var b3= createNode('b3',[]);
var b = createNode('b', [b1,b2,b3]);
var tree = createNode('root', [a, b]);
console.log(tree); var path = [];
var found = false;
function search(node, dest) {
path.push(node.name);
if (node.name == dest) {
found = true;
console.log('found');
console.log(path);
return;
} else {
//节点不对
//分为两种情况 这个节点还有孩子 则继续 没有孩子则返回
if (node.children.length == 0) { } else {
// &&!found 如果在某个节点中找到了 就不再到下一个兄弟节点中去
for (var i = 0; i < node.children.length && !found; i++) {
search(node.children[i], dest);
path.pop();
}
}
}
}
search(tree,'b2');
</script>
</body> </html>