美文网首页
浅谈JS广度优先遍历,深度优先遍历,递归遍历

浅谈JS广度优先遍历,深度优先遍历,递归遍历

作者: 武汉前端阿杰1001 | 来源:发表于2021-04-26 14:45 被阅读0次
输出结果.png

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let obj = [
            {
                label: '一级 1',
                children: [{
                    label: '二级 1-1',
                    children: [{
                        label: '三级 1-1-1',
                        children: [{
                            label: '四级 1-1-1'
                        }]
                    }]
                }]
            },
            {
                label: '一级 2',
                children: [{
                    label: '二级 2-2',
                    children: [{
                        label: '三级 2-2-2',
                        children: [{
                            label: '四级 2-2-2'
                        }]
                    }]
                }]
            }
        ]

        let array = []

        const fn = obj => {
            let arr = [...obj].reverse()
            while(arr.length > 0){
                let item = arr.pop()
                array.push(item.label)
                if(!item.children){
                    continue
                }
                for (let index = item.children.length - 1; index >= 0; index--) {
                    const element = item.children[index];
                    arr.push(element)
                }
            }
            return array
        }

        console.log(fn(obj))


        var o = {label: '', children: obj}
        function dfs(node) {
            if (!node) {
                return
            }
            console.log(node.label)
            if (!node.children) {
                return
            }
            for (let i = 0; i < node.children.length; i++) {
                dfs(node.children[i])
            }
        }
        dfs(o)

        
        // 返回值为数列的第n项的值
        function f(n) {
            if (n == 0) {
                return 1
            }
            if (n == 1) {
                return 1
            }
            return f(n - 1) + f(n - 2)
        }

        
        function f2(n) {
            arr = [1, 1]
            for (let i = 2; i <= n; i++) {
                arr[i] = arr[i - 1] + arr[i - 2]
            }
            return arr[n]
        }



















    </script>
</body>

</html>

相关文章

网友评论

      本文标题:浅谈JS广度优先遍历,深度优先遍历,递归遍历

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