首页 > 其他分享 >什么是树结构

什么是树结构

时间:2023-04-24 21:04:19浏览次数:34  
标签:优先 遍历 树结构 什么 节点 深度 root children

原文点此跳转

什么是树?

在生活中,大家对树肯定不陌生,小朋友都知道树不就是一类植物嘛,不管在任何地方都有各种各样的树。但是在计算机科学里面树是什么呢?一种分层数据的抽象模型,在我们前端工作中无处不在。在 JavaScript 中没有树这种数据结构,但是可以通过 Object 和 Array 这两个数据结构构建树。


深度与广度优先遍历

深度优先遍历

尽可能深的搜索树的分支,主要通过递归实现。

口诀:

  1. 访问根阶段
  2. 对根节点的 children 每个元素进行深度优先遍历

什么是树结构_广度优先遍历

function dfs(root) {
    console.log(root.value)

    root.children.forEach(dfs)
}

广度优先遍历

先访问离根节点最近的节点,主要通过队列实现。

口诀:

  1. 新建一个队列,把根节点入队
  2. 把队头出队并访问
  3. 把队头的 children 元素分别入队
  4. 重复 2 和 3 步骤,直到队列为空

什么是树结构_深度优先遍历_02

javascript

function bfs(root) {
    const q = [root]

    while (q.length) {
        const n = q.shift()

        console.log(n)

        n.children.forEach((child) => {
            q.push(child)
        })
    }
}

常用操作

  • 深度优先遍历
  • 广度优先遍历

应用场景

  1. DOM 树
  2. 级联选择
  3. 树形控件
  4. 组织架构图

原文点此跳转

标签:优先,遍历,树结构,什么,节点,深度,root,children
From: https://blog.51cto.com/u_12639291/6221850

相关文章

  • 万达电商管理层又全换了一遍 这是什么节奏呢
    腾讯科技雷建平7月17日报道持续经历动荡的万达电商正经历新一轮调整。腾讯科技今日获悉,万达电商日前已任命新管理层,其中,原奢侈品电商佳品网COO董策将确定出任CEO,原美国新蛋网大洛杉矶地区CIO曹大军出任CTO。这意味着新一轮万达电商管理层任命调整完成。今年7月,腾讯科技曾报道过......
  • 什么是LDAP身份认证?
    轻量级目录访问协议(LDAP)是专为目录服务开发的核心身份认证协议之一。LDAP历来被用作信息数据库,主要存储以下信息:●用户● 关于这些用户的属性● 组成员特权● ……但LDAP认证是什么,它是如何工作的?本文将回答这些问题,并阐述NingDS身份目录云平台是如何将LDAP身份认证作为......
  • 00绪论----什么是燃烧?常见的燃烧设备?燃料?
    绪论什么是燃烧?燃烧是燃料和氧气发生剧烈化学反应并伴随着发光发热的现象。燃烧将化学能转化为热能常见的燃烧设备煤粉炉、链条炉、内燃机、燃气轮机、火箭发动机燃气轮机工作原理:压气机将空气吸入并经过逐级压缩送至燃烧器内,在此过程中,空气温度提高,将燃料喷入燃烧器,燃料......
  • 越来越多的半导体企业放弃使用FTP,这对行业来说意味着什么?
    FTP作为世界第一款文件传输协议,曾在世界范围内被各行业领域广泛应用。作为近些年关注度最高、发展最快速、最为知识密集型行业之一的半导体行业,其中的集成电路设计制造企业和代工生产企业,在日常运营中,都不可避免涉及到文件和数据的交换,这些文件数据通常体量较大、数量较多,交换频次......
  • CI/CD是什么?
    CICD的全称是ContinuousIntegrationandContinuousDelivery/Deployment,中文翻译为“持续集成和持续交付/部署”。CICD是一种软件开发流程模型,旨在通过自动化和持续性的构建、测试、部署和交付过程,来提高软件开发和发布的效率和质量。CICD的目标是缩短软件开发和发布的周期,降低......
  • 不知道今天吃什么?今天吃什么 API 告诉你
    引言在现代社会,由于生活节奏加快和繁忙的工作日程,越来越多的人感到选择今天吃什么餐点是一项繁琐且令人困扰的任务。为了解决这个问题,许多人会求助于在线菜谱和美食博客等渠道,但是这些选项通常是繁琐和耗时的。幸运的是,今天吃什么API提供了一种简单而有效的方法,使人们能够轻松......
  • 掌握动态规划,从“什么问题适合用”及“解题思路”入手
    摘要:一般是用动态规划来解决最优问题。本文分享自华为云社区《深入浅出动态规划算法(中)》,作者:嵌入式视觉。一,“一个模型三个特征”理论讲解一个模型指的是适合用动态规划算法解决的问题的模型,这个模型也被定义为“多阶段决策最优解模型”。具体解释如下:一般是用动态规划来解......
  • 年薪70万的全栈需要什么技能?
    什么是全栈开发人员?全栈Web开发人员是一名技术专家,可以在任何应用程序的前端和后端工作。这个人应该熟悉3层模型的每一层。3层由表示层(处理用户界面的主前端部分),业务逻辑层(任何处理数据验证的应用程序的后端部分)数据库层全栈开发人员不一定掌握所有技术。但是,专业人员应该......
  • 为什么选择 gRPC
    gRPC入门与实操(.NET篇) 为什么选择gRPC历史长久以来,我们在前后端交互时使用WebApi+JSON方式,后端服务之间调用同样如此(或者更久远之前的WCF+XML方式)。WebApi+JSON是优选的,很重要的一点是它们两者都是平台无关的三方标准,且足够语义化,便于程序员使用,在异构(前后端、多......
  • 什么是字典?
    原文点此跳转什么是字典?与集合类似,字典也是一种存储唯一值的数据结构,但它是以键值对的形式来存储。在ES6中新增了Map字典。实现功能delete删除元素clear清空所有元素set添加/覆盖元素get查找/返回元素的值has判断是否包含某个元素应用场景两个数组的交集有效的括号两数之......