最初的最初,先来看看树的定义吧(定义即灵魂)
树是n(n>=0)个结点的有限集。当n=0时,称为空树。在任意一颗非空树中应该满足:有图有真相
1)有且仅有一个特定的称为根(Root)的结点。
2) 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每一个集合本身又是一棵树,并且称为根的子树。
不知道你是否发现了,在树的定义中又出现了树?
是的,树的定义是递归的。也就是说树是一种递归的数据结构。另外,我们还可以把树看作一个一层一层的结构,也就是层次结构,树非常适合表示具有层次结构的数据呢。她具有以下两个特点:
1)树的根结点没有前驱,除根结点外,所有结点有且仅有一个前驱。有了树,怎么可以没有森林呢?
2)树中所有结点可以有零个或多个后继。
森林(Forest)是m(m>=0)颗互不相交的树的集合。既然如此,那将根结点去掉,不就是森林了嘛
事实上,对树中每个结点而言,其子树的集合即为森林。由此,那么就不难联想到,可以用森林和树相互递归的定义来描述树。
就逻辑结构而言,任何一颗树是一个二元组Tree(root,F),其中:【数据结构之究竟什么是树】最后的最后,总结一下树结构中的基本术语:
root是数据元素,称作数的根结点;
F是m颗树的森林,F= (T1,T2,…,Tm),
其中Ti=(ri,Fi)称为根root的第i颗子树;
- 结点的度(Degree):结点拥有的子树数。(个人看法,也就是结点所拥有的孩子数)。
- 叶子(Leaf)或终端结点:度为0的结点。
- 分支结点或非终端结点:度不为0的结点。
- 内部结点:除根结点外,分支结点也称为内部结点。
- 树的度:树内各结点的度的最大值。
- 孩子(Child)和双亲(Parent):结点的子树的根称为孩子。相应的,该结点称为孩子的双亲。
- 结点的层次(Level):从根开始定义起,根为第一层,根的孩子为第二层。
- 堂兄弟:双亲在同一层的结点
- 树的深度(Depth)或高度:结点的最大层次。
- 有序树和无序树:树中结点的各个子树看成从左到右是有次序的(即不能互换),否则为无序树。
推荐阅读
- 笔记|volatility安装、内存取证常见知识点及例题讲解(已进行两次更新)
- 2021年施工员-市政方向-通用基础(施工员)找解析及施工员-市政方向-通用基础(施工员)试题及解析
- 2021年质量员-市政方向-通用基础(质量员)免费试题及质量员-市政方向-通用基础(质量员)考试技巧
- 毕业设计|基于springboot的学生毕业选题管理系统
- linux|ubuntu20.04安装微信和QQ,腾讯会议,以及一些其他实用软件
- 笔记|单调栈详解-基于LeetCode的题目
- 笔记|LeetCode每日一题题解(1189. “气球” 的最大数量)
- 笔记|LeetCode每日一题题解(917. 仅仅反转字母-双指针-python和C++)
- 笔记|tensorflow框架搭建问题解决