zoukankan      html  css  js  c++  java
  • JS 寻找孩子并打印路径

    <!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>
  • 相关阅读:
    SqlServer数据库正在还原的解决办法
    v-表单自动收集信息
    v-按键修饰符
    v-for列表排序
    class与style的绑定
    v计算属性的应用
    v子向父组件传值
    v传值和传引用
    v-父组件向子组件传值
    练习鼠标悬停切换图片页面
  • 原文地址:https://www.cnblogs.com/cart55free99/p/3859231.html
Copyright © 2011-2022 走看看