首页 > 其他分享 >广度优先遍历和深度优先遍历

广度优先遍历和深度优先遍历

时间:2023-01-07 22:46:14浏览次数:32  
标签:node 优先 遍历 children item let 广度 stack

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="parent">
        <div class="children1">
            <div class="children1-1">
                <div class="children1-1-1">
                    a
                </div>
            </div>
            <div class="children1-2">
                <div class="children1-2-1">
                    b
                </div>
            </div>
            <div class="children1-3">
                c
            </div>
        </div>
        <div class="children2">
            <div class="children2-1">
                <div class="children2-1-1">
                    d
                </div>
            </div>
            <div class="children2-2">
                <div class="children2-2-1">
                    e
                </div>
            </div>
            <div class="children2-3">
                f
            </div>
        </div>
        <div class="children3">
            <div class="children3-1">
                <div class="children3-1-1">
                    g
                </div>
            </div>
            <div class="children3-2">
                <div class="children3-2-1">
                    h
                </div>
            </div>
            <div class="children3-3">
                r
            </div>
        </div>
    </div>
    <script>
        let node_prent = document.querySelector('#parent')
        // DFS 深度优先遍历 栈
        let dfc = (node) => {
            let stack = [] // 栈
            let nodes = [] // 存所有节点
            if (node) {
                stack.push(node) // 假如有节点就存到栈中
                while (stack.length) {
                    let item = stack.pop() // 出栈
                    nodes.push(item)
                    let children = item.children // 拿到子节点
                    // 每层从右往左取 取到放进stack
                    for (let i = children.length - 1; i >= 0; i--) {
                        stack.push(children[i])
                    }
                }
            }

            return nodes // 所有节点返回

        }
        console.log(dfc(node_prent))
        // 广度优先遍历  队列
        // let bfs = (node)=>{
        //     let stack = [] // 队列
        //     let nodes = [] // 返回的节点
        //     if(node){
        //         stack.push(node)
        //         while(stack.length){
        //             let item = stack.shift() // 从前面去
        //             nodes.push(item)
        //             let children = item.children
        //             for(let i=0;i<children.length;i++){
        //                 stack.push(children[i])
        //             }
        //         }
        //     }
        //     return nodes
        // }
        // console.log(bfs(node_prent))
    </script>
</body>

</html>

 

标签:node,优先,遍历,children,item,let,广度,stack
From: https://www.cnblogs.com/z-bky/p/17033751.html

相关文章

  • LeetCode 103_ 二叉树的锯齿形层序遍历
    LeetCode103:二叉树的锯齿形层序遍历题目给你二叉树的根节点root,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进......
  • 简单算法:优先队列
    典型题目题目传送门优先队列对于蒟蒻来说,堆之类的……实在是有点不好理解。所以我们今天只从表面上讲讲什么是优先队列,并且争取做到熟练的运用(知其然不知其所以然)就好......
  • 深度优先与广度优先算法
    一、算法核心深度优先搜索和广度优先搜索,都是图形搜索算法,它两相似,又却不同,在应用上也被用到不同的地方。1)深度优先搜索深度优先搜索属于图算法的一种,是一个针对图和树......
  • Allure08-动态用例优先级与链接
    动态用例优先级allure.dynamic.severity(用例优先级)可以使用参数化的参数只能放到函数和方法中对于一个子功能或测试需求的每一条用例,都可以有自己的severity写法allure.......
  • Allure04-用例优先级与链接
    用例优先级@allure.severity(用例优先级)表示测试用例的重要级别或错误的严重程度BLOCKER:中断缺陷,如客服端程序无响应,无法执行下一步骤CRITICAL:严重缺陷,如功能点缺失NORMA......
  • 102. 二叉树的层序遍历
    102.二叉树的层序遍历{学会层序遍历,直接打十个!!}难度中等1542收藏分享切换为英文接收动态反馈给你二叉树的根节点root,返回其节点值的层序遍历。(即逐层地,从左到右访......
  • 241. 为表达式设置优先级
    问题链接https://leetcode.cn/problems/different-ways-to-add-parentheses/description/解题思路这个题目是一个典型的递归问题,也是一个典型的分治问题。我们讲过,递归......
  • Java 中map 遍历优化
    文章目录packagedemo.map;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.stream.Collectors;/***<p>*Map遍历优化*</P>......
  • 「贪心&优先队列」数列极差
    本题为12月30日22寒假集训每日一题题解题目来源:(未知)题面题目描述佳佳的老师在黑板上写了一个由n个正整数组成的数列,要求佳佳进行如下操作:每次擦去其中的两个数a和......
  • 144. 二叉树的前序遍历
    144.二叉树的前序遍历难度简单965收藏分享切换为英文接收动态反馈给你二叉树的根节点root,返回它节点值的前序遍历。示例1:输入:root=[1,null,2,3]输出:[1,2,3]......