树的基本概念

2023-11-05

什么是树?

一棵树是一些节点的集合。这个集合可以是空集,若非空,则一棵树由一个称作根(root)的节点r以及0个或n个非空的树T1,T2,…,Tn组成,我们把T1,T2,Tn称为根(root)的子树,这些子树中每一棵的根都被来自根r的一条边(edge)所连接。
一般的树

树的一种实现

实现树的一种方法可以是在每一个节点数据外还要有一些链指向它的子节点。如上图所示根有Tn个子节点,我们就要有Tn个链指向它。然而,我们刚开始是不知道每个节点的儿子数的,而且每个节点的儿子数不一样。因此在数据结构中建立到各子节点之间的链接的不可行的。
解决方法:我们让第一个子节点链上第二个子节点,第二个子节点链上第三个子节点…,我们把它们称为兄弟链。还有一个孩子链,链上它的第一个孩子。

class TreeNode
{
	Object element;
	TreeNode firstChild;
	TreeNode nextSibling;
}

树的实现

树的一些名词

已下图的树为例
一棵树

节点

  • 树叶:没有儿子的节点。上图中的树叶是B、F、G、I、J和K。
  • 兄弟:相同父亲的节点。上图中B、C、D和E是兄弟,G和H是兄弟,I、J和K是兄弟。
  • 祖父和孙子:用类似于兄弟的方法可以定义祖父和孙子的关系。
  • 深度:节点T的深度为从根到T的唯一路径的长。
  • 高:节点T的高是从T到一片树叶的最长路径的长。因此所有的树叶的高都是0。
  • 度:分支的数目。一个节点只有一个分叉就是1度,两个分叉就是2度的子树。

整棵树

  • 一棵树的高:等于它的根的高。
  • 一棵树的深度:等于它的最深的树叶的深度。也就是树最下面的节点的深度,也就等于这棵树的高。
  • 一棵树的度:取树中所有节点的度的最大值。
    深度高度度

树的遍历

  • 先序遍历:先处理节点在先序遍历儿子节点。
  • 后序遍历:先后序遍历儿子节点在处理节点。
    还是以棵树为例
    在这里插入图片描述
    先序遍历:ABCFDGHLEIJK
    后序遍历:BFCGLHDIJKEA
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树的基本概念 的相关文章

  • 金融ARQC、ARPC验证生成规则

    从2012年从事金融行业的IT开发和实施工作以来 接触最多的就是IC卡片的ARQC等安全验证 只从发行IC卡以来 行业里面安全验证就是使用ARQC来验证交易的安全性 最近在项目中实施改造的时候因为前段读卡上送过来的ARQC到我系统 我系统去

随机推荐

  • kafka对单分区重设偏移量

    一 整个kafka设置偏移量 对kafka整个集群设置偏移量大家使用较多 适合测试环境 丢弃整个消息队列中的数据 kafka consumer groups sh bootstrap server localhost 9092 group
  • arduino笔记28:使用TM1637四位数码管显示模块

    TM1637模块有四个引脚 相比于使用四位数码管的10个引脚 使用TM1637模块可以大大节省引脚数量 四个引脚的意义如下 GND 电源负级 VCC 电源正极 5V DIO 数据IO模块 可以接任意的数字引脚 CLK 时钟引脚 可以接任意的
  • yolo deepsort_基于YOLOv5和DeepSort的目标跟踪

    软硬件环境 windows 10 64bit pytorch yolov5 deepsort YOLOv5 前文 YOLOv5目标检测 和 YOLOv5模型训练 已经介绍过了YOLOv5相关的内容 在目标检测中效果不错 DeepSort S
  • 这可能是介绍Android UvcCamera最详细的文章了

    设备外接usb摄像头 进行基本的预览 拍照 录像 相信有些同学在工作中有遇到类似的需求 uvc camera 不管你之前有没用过 有没遇到过 相信看完这篇文章 一定会带给你一些收获 这篇文章将从下面几点展开讲解 一 什么是UVC 二 UVC
  • MySQL:MySQL8用户与角色管理

    文章目录 MySQL用户管理 创建用户 查看用户权限 添加 删除权限 查询表权限 使用新创建的用户登陆 修改密码 删除用户 mysql用户管理表 caching sha2 password插件 validate password组件的安装和
  • CSS3 连续向下循环播放动画

    向下动画是在 animate css 的基础上进行修改的 效果展示
  • Java加密工具类EncryptUtils

    Java 提供了一些常见的加密算法 如 MD5 SHA AES DES 现将这些实现方法放进加密工具类 EncryptionUtils 使用了 String format 来确保每个字节都能够正确的被转化为成十六进制字符串 而且不会因为缺少
  • 浏览器背后的运行机制

    浏览器背后的运行机制 从本章开始 我们的性能优化探险也正式进入到了 深水区 浏览器端的性能优化 平时我们几乎每天都在和浏览器打交道 在一些兼容任务比较繁重的团队里 苦逼的前端攻城师们甚至为了兼容各个浏览器而不断地去测试和调试 还要在脑子中记
  • vant-ui 按需引入

    我们在开发移动端的时候 在布局的过程中大部分会用到vant ui 方便快捷 也能更好的帮助我们快速的完成项目布局 首先 第一步 安装vant 在现有项目中使用 Vant 时 可以通过 npm 或 yarn 进行安装 Vue 2 项目 安装
  • 【华为OD机试】跳房子1【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 跳房子 也叫跳飞机 是一种世界性的儿童游戏 游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格 跳房子的过程中 可以向前跳 也可以向后跳 假设房子的总格数是c
  • 无线地磁传感器更适合路边停车系统

    随着停车难问题日益严重 在有限的固定停车场外 路边停车就成为当下很常见的一种停车方式 早起国外采用电感线圈来作为车位的传感器 国内比较少见 而我国直接跨过了电感线圈 直接采用了无线地磁传感器作为车位的传感器 那么无线地磁传感器优势在哪 地磁
  • 程序员经常聚集的国内开发者社区总览表

    转载 http www iteye com topic 1135562 云盘 http yunpan 360 cn 不管是编程菜鸟还是程序员大牛 都需要有自己的交流圈和学习平台 根据我自己的经验总结分享一些开发者论坛 社区啊 有大牛聚集的地
  • Nginx完美解决前后端分离端口号不同导致的跨域问题

    笔者在做前后端分离系统时 出现了很多坑 比如前后端的url域名相同 但是端口号不同 例如前端页面为 http 127 0 0 1 后端api根路径为 http 127 0 0 1 8888 这样就导致跨域问题 前端设置的request he
  • 雷达辐射源调制信号仿真(代码)

    雷达辐射源调制信号仿真 说明 通过Matlab进行单载频 CW 线性调频 LFM 非线性调频 NLFM 二相编码 BPSK 四相编码 QPSK 二频编码 BFSK 四频编码 QFSK 七种雷达脉内调制信号的方仿真 环境 Matlab 直通
  • 【Web前端学习笔记】第一章 HTML常用标签

    Web前端学习笔记 第一章 HTML常用标签 文章目录 Web前端学习笔记 前言 一 HTML是什么 二 常见标签 1 文本标签 2 列表标签 3 图片标签img 4 超链接a 5 表格标签table 6 表单form 7 分区标签 总结
  • 开源软件收集

    http www 7 zip org 7 Zip 4 16 Beta 文件压缩工具 可与Windows资源管理器集成http a note sourceforge net A Note 4 2 1 可在Windows桌面放置便笺 并可提供闹
  • 大模型训练时,使用bitsandbytes报错的解决方法

    前言 在对大语言模型 LLaMa Chat GLM等 进行微调时 考虑到减少显存占用 会使用如下方式加载模型 from transformers import AutoModel model AutoModel from pretraine
  • 2021-07-31

    2周目总结 7 19 7 25 无事 打牌 7 26 8 1 河南加油 无事打牌 我似乎忘了什么 哦 还有作业没弄 作业qaq 正在补习ing
  • T027基于51单片机的智能窗帘窗户控制系统proteus仿真原理图PCB

    功能 0 本系统采用单片机STC89C52作为系统的主控芯片 1 系统采用LCD1602液晶实时显示当前时间 窗帘状态 光照强度 2 系统具有四个功能按键 支持手动按键 定时 遥控三种模式控制窗帘 3 系统采用一个轻触按键模拟限位开关 步进
  • 树的基本概念

    什么是树 一棵树是一些节点的集合 这个集合可以是空集 若非空 则一棵树由一个称作根 root 的节点r以及0个或n个非空的树T1 T2 Tn组成 我们把T1 T2 Tn称为根 root 的子树 这些子树中每一棵的根都被来自根r的一条边 ed