第8章:树
1.树是什么
- 一种
分层数据的抽象模型 - 前端工作中常见的树包括:DOM树,级联选择(省市区),树形控件,…
- javascript中没有树,但是可以用Object和Array构建树

4.树的常用操作:深度/广度优先遍历,先中后序遍历
深度 / 广度遍历
深度优先遍历:尽可能深的搜索树的分支。如下图深度访问顺序:

广度优先遍历:先访问离跟节点最近的节点。
标题,目录,深入看每个目录下的小节。

深度优先遍历算法口诀:(其实就是一个递归)
1.访问根节点。
2.对根节点的children挨个进行深度优先遍历。

只有2步,写代码也只有2行代码,但是这2行代码实现了深度优先递归,在遍历的过程中被反复调用很多次。
const tree = {val: 'a',children: [{val: 'b',children: [{val: 'd',children: []},{val: 'e',children: []}]},{val: 'c',children: [{val: 'f',children: []},{val: 'g',children: []}]}]
}
const dfs = function (tree) {console.log(tree.val)// root.children.forEach((child) => dfs(child))root.children.forEach(dfs)
}
广度优先遍历算法口诀(对列)
1.新建一个队列,把根节点入队
2.把队头出队并访问
3.把队头的children挨个入队
4.重复第2,3步,知道队列为空。

const root = {val: 'a',children: [{val: 'b',children: [{val: 'd',children: []},{val: 'e',children: []}]},{val: 'c',children: [{val: 'f',children: []},{val: 'g',children: []}]}]
}const bfs = function (root) {const q = [root]while(q.length > 0) {const n = q.shift()console.log(n.val)if (n.children) {n.children.forEach(child => {q.push(child)})}}
}
二叉树的先,中, 后序的三种遍历
1.二叉树:树中每个树的节点最多有2个节点
2.在js中通常用Object来模拟二叉树

先序遍历:(根,左,右)
1.访问根节点
2.对结节点的左子树进行先序遍历
3.对根节点的右子树进行先序遍历

如上图:访问顺序:1,2, 4, 5,3, 6, 7
const bt = {val: 1,left: {val: 2,left: {val: 4,left: {},right: {}},right: {val: 5,left: {},right: {}}},right: {val: 3,left: {val: 6,left: {},right: {}},right: {val: 7,left: {},right: {}}}}const preorder = function (root) {if (!root) return // 访问根节点console.log(root.val)preorder(root.left)preorder(root.right)
}
中序遍历
相关文章:
第8章:树
1.树是什么 一种分层数据的抽象模型前端工作中常见的树包括:DOM树,级联选择(省市区),树形控件,…javascript中没有树,但是可以用Object和Array构建树 4.树的常用操作:深度/广度优先遍历,先中后…...
Java基础学习(10)
Java基础学习 一、JDK8时间类1.1 Zoneld时区1.2 Instant时间戳1.3 ZonedDateTime1.4 DateTimeFormatter1.5 日历类时间表示1.6 工具类1.7 包装类JDK5提出的新特性Integer成员方法 二、集合进阶2.1 集合的体系结构2.1.1 Collection 2.2collection的遍历方式2.2.1 迭代器遍历2.2.…...
Tomcat多实例部署实验
引言 本文主要内容是tomcat的多实例配置实验。 一、实验准备 Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,互不影响。多实例与虚拟主机不同,虚拟主机的本质是在一个服务下有多个相对独立的目录,但是多实…...
无良公司把我从上家挖过来,白嫖了六个月,临近试用期结束才说不合适,催我赶紧找下家!...
职场套路多,一不小心就会掉坑,一位网友讲述了自己的遭遇: 今天被领导催促离职了,当时就是这个领导把他从别的公司挖过来。这家公司催得太急,为了投奔这里,他和上家的HR都闹翻了,上家总监挽留他&…...
忙碌中也要记得休息,这两款好玩的游戏推荐给你
第一款:古墓丽影9年度版 《古墓丽影9》(原名Tomb Raider)是由水晶动力开发,史克威尔艾尼克斯发行的动作冒险游戏。 它于 2013 年发布。续集是古墓丽影崛起和古墓丽影暗影。 本作的重点是新版劳拉(Lara Croft…...
四种方法可以实现判断字符串包含某个字符
小编介绍过js中使用indexOf() 方法判断字符串包含某个字是一个很好用的方法,但除了这个方法之外,JavaScript中还有四种方法可以实现判断字符串包含某个字符: 1、使用字符串search() 方法 search() 方法用于检索字符串中指定的子字符串&…...
ubuntu进程相关command
列出当前系统中所有正在运行的进程的详细信息 ps aux查看所有包含某关键字的进程 例:查看所有包含关键字click的进程 ps aux | grep click运行后显示如下信息: root 8998 0.0 0.0 10984 4052 ? S 4月23 0:00 sudo ./bin/click…...
7.参数校验
在controller和service进行前端传参校验,保证存到数据库的数据是正确的 1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>这里无需…...
nginx简单介绍
文章目录 1. 下载并解压2. 80端口被占用,更改nginx默认的监听端口3. 访问nginx4. 在linux上安装nginx5. nginx常用命令6. nginx.conf 1. 下载并解压 官网下载 2. 80端口被占用,更改nginx默认的监听端口 更改conf/nginx.conf文件 3. 访问nginx ht…...
美创科技首届渠道高峰论坛| 两大分论坛亮点汇聚
4月22日,美创科技首届渠道高峰论坛在海南三亚隆重举行,本届高峰论坛以“新起点 新战略 共赢数安蓝海”为主题,全国各地200余家合作伙伴齐聚。当日下午,行业分论坛、技术分论坛两大论坛以及圆桌会议,多方视角、全方位共…...
QML中【预计符号】和【Unknown Component M300】的红色警告解决方法
问题描述: QML的项目中带中文,每次打开项目都在问题栏显示【预计符号】的红色警告,还有一种是【Unknown Component M300】的警告,代码能正常编译和运行。像我这样对代码追求优雅的强迫症患者看着很不爽,查了很多网上的…...
聊聊「低代码」的实践之路
区块链、低代码、元宇宙、AI智能; 01 【先来说说背景】 这个概念由来已久,但是在国内兴起,是最近几年; 低代码即「Low-Code」; 指提供可视化开发环境,可以用来创建和管理软件应用; 简单的说…...
(一)服务发现组件 Eureka
1、Eureka 简介 Eureka 是Spring Cloud Netflix 微服务套件中的一部分, 它基于Netflix Eureka 做了二次封装, 主要负责完成微服务架构中的服务治理功能。我们只需通过简单引入依赖和注解配置就能让Spring Boot 构建的微服务应用轻松地与Eureka 服务治理…...
学会笔记本电脑录屏快捷键,轻松实现录屏!
案例:笔记本电脑录屏有快捷键吗? 【我每次打开笔记本电脑录屏都要耗费比较长的时间,这样会影响到我录屏的效率。在这里想问一下,有没有快速打开电脑录屏的方法?】 在日常的工作、学习、娱乐中,我们经常需…...
( “树” 之 Trie) 208. 实现 Trie (前缀树) ——【Leetcode每日一题】
知识点回顾 : Trie,又称前缀树或字典树,用于判断字符串是否存在或者是否具有某种字符串前缀。 ❓208. 实现 Trie (前缀树) 难度:中等 Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构ÿ…...
算法训练Day40:343. 整数拆分 96.不同的二叉搜索树
文章目录 整数拆分题解(动态规划)贪心 不同的二叉搜索树题解 整数拆分 CategoryDifficultyLikesDislikesContestSlugProblemIndexScorealgorithmsMedium (62.22%)11660--0 Tags 数学 | 动态规划 Companies 给定一个正整数 n ,将其拆分为…...
设计模式及代码
1、工厂方法模式(Factory Method Pattern): 定义一个用于创建对象的接口,让子类决定实例化哪一个类。应用场景:当一个类不知道它所必须创建的对象的类时;一个类希望由它的子类来指定它所创建的对象时。 抽…...
9.java程序员必知必会类库之加密库
前言 密码学在计算机领域源远流长,应用广泛。当前每时每刻,每一个连接到互联网的终端,手机,电脑,iPad都会和互联网有无数次的数据交互,如果这些数据都是明文传输那将是难以想象的。为了保护用户隐私&#…...
C技能树:for循环:九九乘法表
使用for循环,打印九九乘法表。下列四个选项中有一项无法实现该功能,请找出该错误选项。 #include <stdio.h> int main(int argc, char** argv) {int i 0;int j 0;(_____1_____)return 0; } int row 0; int col 0; for(i 0; i < 8…...
Win10老是蓝屏收集错误信息重启无效怎么办?
Win10老是蓝屏收集错误信息重启无效怎么办?有用户遇到了电脑开机蓝屏的情况,收集错误信息重启电脑之后,依然无法解决问题。那么这个问题要怎么去进行解决呢?接下来我们来看看以下具体的处理方法教学吧。 准备工作: 1、…...
Janus-Pro-7B自主部署:从nvidia-smi监控到supervisor服务管理
Janus-Pro-7B自主部署:从nvidia-smi监控到supervisor服务管理 1. 项目概述 Janus-Pro-7B是DeepSeek发布的一款统一多模态理解与生成模型,它突破了传统模型在处理不同任务时的冲突问题。这个模型支持图像问答、OCR识别、图表分析等多模态理解功能&#…...
为什么Snap卸载Docker总卡在快照?揭秘自动备份机制与3种强制中断方案
为什么Snap卸载Docker总卡在快照?深度解析与实战解决方案 当你尝试卸载通过Snap安装的Docker时,是否遇到过进度条卡在"Save data of snap docker in automatic snapshot set #3"的情况?这种看似简单的卸载操作背后,隐藏…...
Wan2.2-I2V-A14B私有部署实战教程:RTX 4090D一键生成1080P视频
Wan2.2-I2V-A14B私有部署实战教程:RTX 4090D一键生成1080P视频 1. 开篇:为什么选择私有部署 当你需要频繁生成高质量视频内容时,公有云服务往往面临三个痛点:生成排队时间长、隐私数据风险、调用成本高。Wan2.2-I2V-A14B私有部署…...
炉石传说自动化工具:从效率提升到智能策略的全栈解决方案
炉石传说自动化工具:从效率提升到智能策略的全栈解决方案 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 在快节奏的现代生活中,…...
【IEEE TNNLS 2025】赋予大模型“跨院行医”的能力:基于全局与局部提示的医学图像泛化框架 (GLP) 解析
在医学图像分割的临床落地中,一个长期存在的痛点是**“领域偏移 (Domain Shift)”**。一个在A医院(源域)表现完美的深度学习模型,当部署到使用不同成像设备、不同扫描参数的B医院(未知目标域)时,…...
告别混乱!用Power BI工作区高效管理跨部门报表:数据集/仪表板/报告编排技巧
告别混乱!用Power BI工作区高效管理跨部门报表:数据集/仪表板/报告编排技巧 在数据驱动的商业环境中,跨部门协作常陷入"数据孤岛"困境——财务部的销售分析需要市场部的活动数据,运营部的库存报表又依赖采购部的供应商信…...
Docker测试学习思路
Docker 核心概念学习与实战指南本文系统梳理 Docker 学习的核心思路与方法,用通俗类比帮助理解 Docker 的本质,涵盖镜像构建、容器运行、网络通信、数据持久化、资源限制五大核心能力,适合初学者建立清晰的 Docker 知识框架。一、Docker 到底…...
近期 GitHub 上爆火的 34 个极具潜力的开源项目
Coasts GitHub 链接:https://github.com/coast-guard/coasts 一款为 Git 工作区打造的本地主机服务隔离与编排工具,由前 Y Combinator 创始人开发。将自主智能体的主机全访问权限这一安全风险规避,智能体可在容器化主机内创建环境、运行服务…...
Phi-4-mini-reasoning推理服务监控:通过webshell日志诊断部署状态方法
Phi-4-mini-reasoning推理服务监控:通过webshell日志诊断部署状态方法 1. 模型简介 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型,专注于高质量、密集推理的数据处理。作为Phi-4模型家族的一员,它经过专门微调以提升数学推…...
乙巳马年春联生成终端步骤详解:横批居中与上下联基线对齐的CSS技巧
乙巳马年春联生成终端步骤详解:横批居中与上下联基线对齐的CSS技巧 1. 引言:从创意到像素的挑战 想象一下,你正在开发一个充满年味的Web应用——一个能自动生成马年春联的“皇城大门”。AI模型已经为你写出了文采斐然的上下联和横批&#x…...
