美文网首页
js-树的遍历

js-树的遍历

作者: 小猪佩奇的王子 | 来源:发表于2019-11-10 10:54 被阅读0次

    数据

    var tree = [
        {
            name: "A",
            children: [
                {
                    name: "B",
                    children: [
                        {
                            name: "E"
                        },
                        {
                            name: "F"
                        }
                    ]
                },
                {
                    name: "C",
                    children: [
                        {
                            name: "G"
                        },
                        {
                            name: "H"
                        }
                    ]
                },
                {
                    name: "D",
                    children: [
                        {
                            name: "I"
                        },
                        {
                            name: "J"
                        }
                    ]
                }
            ]
        }
    ]
    

    广度优先遍历

    var list = []
    function wideSearch(tree) {
        let nodes = []
        nodes = nodes.concat(tree)
        var shift = nodes.shift()
        list.push(shift)
        if (shift.children) {
            nodes = nodes.concat(shift.children)
        }
        if (nodes.length > 0) {
            wideSearch(nodes)
        }
        return nodes
    }
    

    深度优先遍历

    var list = []
    function deepSearch(tree) {
        for (var i = 0; i < tree.length; i++) {
            list.push(tree[i].name)
            if (tree[i].children) {
                deepSearch(tree[i].children)
            }
        }
    }
    

    深度优先不递归

    function deepSearchStack(tree) {
        var stack = []
        var result = []
        stack = stack.concat(tree)
        while (stack.length > 0) {
            var node = stack.pop()
            result.push(node.name)
            if (node.children) {
                stack = stack.concat(node.children.reverse())
            }
        }
        console.log(result)
    }
    
    deepSearchStack(tree)
    

    相关文章

      网友评论

          本文标题:js-树的遍历

          本文链接:https://www.haomeiwen.com/subject/pgnobctx.html