数据结构之树(图解)

文章目录

  • 前言
  • 一、树是什么?
  • 二、树的特点
  • 三、树的相关概念
  • 四、树的表示方法(孩子兄弟表示法)
  • 总结


前言

在学习完线性结构,例如顺序表、链表、栈、队列后,我们要开始学习一个新的数据结构----树

一、树是什么?

首先树是一个非线性的数据结构,由有限个节点组成的一个具有层次的集合。
如图,下面是树的逻辑结构,因为逻辑结构像一颗倒挂的树,也就是根在上,树枝朝下。
顾名思义被称为“”。

树的逻辑结构

二、树的特点

	我们来看上面的图
  1. 根节点:没有前驱结点的节点,如图中的A。
  2. 除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti
    (1<= i <= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继
  3. 树是递归定义的。
  4. 树又被称作树形结构,是一对多的,也就是一个节点对应多个节点。

三、树的相关概念

  1. N个节点的树有N-1条边
  2. 节点的度: 一个节点含有的子树的个数称为该节点的度 ;如图:A的度为3
  3. 树的度: 一棵树中,最大的节点的度称为树的度;如上图:树的度为3
  4. 叶节点或终端节点: 度为0的节点称为叶节点; 如上图:J、K、L、M、G等节点
  5. 叶节点分枝节点: 度不为0的节点,有孩子节点的节点
  6. 父节点: 有子树的节点,有子节点的节点子节点:有父节点的节点
  7. 兄弟节点: 具有相同父节点的节点
  8. 堂兄弟节点: 双亲在同一层的节点
  9. 节点的层次: 根节点是第一层,以此类推
  10. 树的高度或深度: 树中节点的最大层次,也是叶节点的层次
  11. 节点的祖先: 从根节点到该节点的所有节点都是这个节点的祖先,也就是从根节点往下找这个节点经过 的节点,当然也包括根节点。
  12. 子孙: 以某个节点为根节点的子树中的任意一个节点都是该节点的子孙
  13. 森林: 互不相交的多棵树叫森林

树

四、树的表示方法(孩子兄弟表示法)

我们想用代码来写出一个完整的树,需要考虑的因素太多了,方法也很多,在这里我们讲一个树的最优方法供大家学习。

我们知道树是一对多的结构,所以这也同样会用到指针,但是指针应该有几个,都指向谁?这就又是一个问题了。不要慌张,先来看这颗树的逻辑结构。
树的逻辑结构

我们看到首先A这个根节点 链接着分别以B、C、D三个为根节点的子树,那我们是否就要在A这个节点上加三个指针呢?那是不是如果A链接4个就要加四个指针?很明显不可能这么做,这个时候就有一位大神发明了一种方法(孩子兄弟表示法)
这个方法总结成一句话就是,“父母看老大,老大看老二,老二看老三”。

如图:

孩子兄弟表示法

总结

以上就是我们今天讲述的 树的结构,下节课让我们继续学习新的知识-----二叉树

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/124181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小白如何在一个月写一篇论文(中文核心,SCI)

小白如何半年发3篇sci的我教你如何快速“水”一篇sci论文_哔哩哔哩_bilibili 计算机视觉&#xff0c;cv领域 半年发3篇sci的我教你如何快速“水”一篇sci论文 计算机视觉(辅导 SCI EI 核心) 微信&#xff1a;whbwqq123或主页加up 小白如何快速写出一篇论文并成功发表&…

Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (二)

这是继上一篇文章 “Elasticsearch&#xff1a;使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation &#xff08;一&#xff09;” 的续篇。在这篇文章中&#xff0c;我主要来讲述 ElasticVectorSearch 的使用。 我们的设置和之前的那篇文章是一样的&#xff…

【C】C语言文件操作

1.为什么使用文件 我们前面学习结构体时&#xff0c;写通讯录的程序&#xff0c;当通讯录运行起来的时候&#xff0c;可以给通讯录中增加、删除数据&#xff0c;此时数据是存放在内存中&#xff0c;当程序退出的时候&#xff0c;通讯录中的数据自然就不存在了&#xff0c;等下…

大彩串口屏读写文件问题

分区 本文使用的是大彩串口屏M系列的&#xff1a; 串口屏内部有三个分区&#xff0c;分别为A、B、C三个区&#xff1a; A区&#xff1a;系统区&#xff0c;存储组态工程文件 B区&#xff1a;数据区&#xff0c;存储配置信息&#xff0c;记录数据、历史曲线等 C区&#xff1a;备…

3.线性神经网络

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 线性回归基础优化算法一、线性回归1、买房案例2、买房模型简化3、线性模型4、神经网络5、损失函数6、训练数据7、参数学习8、显示解9、总结 二、 基础优化算法1、梯度下降2、学习率3、小批量随机梯度下降4、批量大小5、…

docker+playwright

windows10 docker playwright 难点在于windows下docker的安装&#xff0c;以及官方hub被墙的困难。 wsl2 wsl2 ubuntu docker git clone https://gitee.com/lineuman/lcs_playwright.git npm install npx playwright test docker端口怎么映射到主机上面&#xff1f; 设置重…

图、深度优先(DFS)、广度优先(BFS)

图 基本介绍 表示方式 图的创建 from typing import Listclass Graph:vertex_list: List[str] [] # 存储顶点的数组edges: List[list] [] # 存储图中各条边的邻接矩阵num_edges: int 0 # 边的数总数def __init__(self, n: int):"""根据传入的顶点个数初始…

测开(性能测试---LoadRunner)

目录 一、LoadRunner的安装 二、Loadrunner的基本概念 三、开发测试脚本——VUG 3.1 脚本录制 3.2 脚本加强 四、设计场景——Controller LoadRunner是一款开源桌面应用软件&#xff0c;可用来模拟用户负载完成性能测试工作&#xff0c;LoadRunner的功能在版本不断升级的…

JWT详解解读读

&#x1f4d1;前言 本文主要是jwt解读文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日一句&#xff1a;努力一点&#…

WebDAV之π-Disk派盘 + 读出通知

手机各种推销通知太多,如何避免那些繁琐的通知内容,做出一键就能够阅读重要通知的最佳体验,帮助您更加快速和便捷的体验到那些应用内容?推荐大家使用读出通知。 读出通知APP可以设置接收通知的app,还可以用耳机操作,操作简单,你还可以指定播报设备,还有播报的声音的设置…

数据结构 | 顺序表专题

数据结构 | 顺序表专题 文章目录 数据结构 | 顺序表专题课前准备1. 目标2. 需要的储备知识3. 数据结构相关概念 开始顺序表1、顺序表的概念及结构2、顺序表分类3、动态顺序表的实现初始化顺序表顺序表的销毁顺序表的尾插顺序表的头插检查容量顺序表的尾删打印顺序表顺序表的头删…

【递归、搜索与回溯算法】第五节.129. 求根节点到叶节点数字之和和814. 二叉树剪枝

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;递归、搜索与回溯算法 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&am…

.jnlp

首先配置电脑的java环境。 百度搜索jre下载&#xff0c;会有很多结果&#xff0c;一般选择官网进行下载。 下载正确的jre版本。 我的电脑是windows 64位&#xff0c;根据你自己电脑的情况选择版本进行下载。不懂自己电脑是多少位的可以看下一步。 查看电脑是64位还是32…

如何改善设备综合效率(OEE)并提高工厂的生产力

在现代制造业中&#xff0c;提高设备综合效率&#xff08;Overall Equipment Efficiency&#xff0c;OEE&#xff09;是企业追求高效生产和优化生产能力的重要目标之一。OEE是一个关键的绩效指标&#xff0c;可以帮助企业评估设备的利用效率、生产效率和质量水平。本文将从三个…

Spring源码-refresh(1)

1、Refresh方法简介 refresh 是Spring的核心流程&#xff0c;主要包含13个方法。这13个方法中主要又包含3个方法。 如图&#xff1a; 其中标记星号的代表主要的方法。从方法中后面的分支数据也可以看出&#xff0c;主要的方法中存在大量的逻辑处理&#xff0c;后面我们会慢慢分…

SQL-正则表达式和约束

文章目录 主要内容一.正则表达式1.操作1代码如下&#xff08;示例&#xff09;: 2.操作2代码如下&#xff08;示例&#xff09;: 3.操作3代码如下&#xff08;示例&#xff09;: 4.操作4代码如下&#xff08;示例&#xff09;: 二.约束1.主键约束 2.自增长约束3.非空约束4.唯一…

国产服务器安装onlyoffice详细教程

1.通过docker安装onlyoffice 找一台能访问互联网的服务器下载onlyoffice镜像 sudo docker pull onlyoffice/documentserver查看镜像 docker images 启动onlyoffice docker run -itd \ --name onlyoffice1 \ --restart always \ -p 8099:80 \ -v /data/docker/onlyoffice/lo…

微信小程序之投票管理

前言 对于会议管理模块&#xff0c;必不可少的当然就是我们的投票管理&#xff0c;实现真正意义上的无纸化办公&#xff0c;本期博客为大家介绍会议管理模块&#xff0c;包括发布投票及查看各类投票的状态 所用技术点 MyBatis、SpringMVC、VentUI MyBatis和SpringMVC在博客主…

最新发布!阿里云卓越架构框架重磅升级

云布道师 10 月 19 日阿里云峰会山东上&#xff0c;阿里云重磅升级《阿里云卓越架构白皮书》&#xff0c;助力企业在阿里云上构建更加安全、高效、稳定的云架构。《阿里云卓越架构白皮书》在今年的阿里云峰会粤港澳大湾区首度亮相&#xff0c;这是阿里云基于多年服务各行各业客…

数据结构基础

在计算机科学中&#xff0c;数据结构是一种数据组织、管理和存储的格式&#xff0c;它可以帮助我们实现对数据高效的访问和修改&#xff0c;更准确的说&#xff0c;数据结构是数据值的集合&#xff0c;它可以体现数据值之间的关系&#xff0c;以及可以对数据进行应用的函数或操…