数据结构—树的定义与性质

目录

1.树的定义

2.基本术语

3.树的性质


1.树的定义

树是n(n≥0)个结点的有限集。

n=0时,称为空树。

(1)树有且只有一个特定的结点,称为根节点。

(2)当n>1时,其余结点可分为n(n>0)个互不相交的有限集T1,T2......Tm,其中每个集合本身又是一棵树,称为根的子树。

2.基本术语

1)祖先、子孙、双亲、孩子、兄弟和堂兄弟。

考虑结点K,从根A到结点K的唯一路径上的所有其他结点,称为结点K的祖先。如结点B是结点K的祖先,而K是B的子孙,结点8的子孙包括EFKL。路径上最接近结点K的结点E称为K的双亲,而K为E的孩子。根是树中唯一没有双亲的结点有相同双亲的结点称为兄弟,如结点K和结点L有相同的双亲E,即K和L为兄弟。双亲在同一层的结点互为堂兄弟,结点G与EFHLJ互为堂兄弟。

2)结点的度和树的度。

树中一个结点的孩子个数称该节点的度。树中结点的最大的度数称为树的度,如结点B的度为2,结点D的度为3,则树的度为3。

3)分支结点和叶结点。

度大于0的结点称为分支结点(又称非终端结点);度为0(没有孩子结点)的结点称为叶结点(又称终端结点)。在分支结点中,每个结点的分支数就是该结点的度。根节点度不为0,也被称为分支结点。


4)结点的深度、高度和层次。

结点的层次从树根开始定义,根结点为第1层,它的孩子为第2层,以此类推。结点的深度就是结点所在的层次。树的高度(或深度)是树中结点的最大层数。结点的高度是以该结点为根的子树的高度。图5.1中树的高度为 4。

5)有序树和无序树。

树中结点的各子树从左到右是有次序的,不能互换,称该树为有序树,否则称为无序树。

3.树的性质

1)树的结点树n等于所有结点的度数之和加1。

结点的度是指该结点的孩子数量,每个结点与其每个孩子都由唯一的边相连,一次树中所有结点的度数之和等于树中的边数之和。树中的结点(除根外)都有唯一的双亲,因此结点数n等于边数之和加1,即所有结点的度数之和加1。

2)度为m的树中第i层上至多有m^(i-1)个结点(i≥1)。

第1层至多有1个结点(即根结点),第2层至多有m个结点,第3层至多有m^2个结点。使用数学归纳法可推出第i层至多有m^(i-1)个结点。

3)高度为h的m叉树至多有((m^h)-1)/(m-1)个结点。

当各层节点数达到最大时,树中至多有1+m+m^2+m^3+......m^(h-1) = (m^h)-1/(m-1)

4)度为 m、具有n个结点的树的最小高度h为logm(n(m-1)+1)(取上限,不满整取整数的上限)。

**[logm(n(m-1)+1)**读作log以m为底,(n(m-1)+1)的对数。

为使树的高度最小,在前h-1层中,每层的结点数都要达到最大,前h-1层最多有**(m^(h-1)-1)/(m-1)** 个结点,前h层最多有**((m^h)-1)/(m-1)** 个结点。因此**(m^(h-1)-1)/(m-1)<n≤** ((m^h)-1)/(m-1), 即 h-1<logm(n(m-1)+1)≤h, 解得 h(min) =「logm(n(m-1)+ 1)。

注意区分表达式的括号范围,都是分子分母的形式,**((m^h)-1)/(m-1)**即m的h次方减1,除以m减1。

5)度为m、具有n个结点的树的最大高度h为n-m+1。

由于树的度为m,因此至少有一个结点有m个孩子,它们处于同一层。为使树的高度最大,其他层可仅有一个结点,因此最大高度(层数)为n-m+1。由此,也可逆推出度为h、度为m的树至少有h+m-1个结点。

相关推荐
im_AMBER1 分钟前
Leetcode 69 正整数和负整数的最大计数
数据结构·笔记·学习·算法·leetcode
fufu03112 分钟前
Linux环境下的C语言编程(三十六)
linux·c语言·开发语言·数据结构·算法
_OP_CHEN7 分钟前
【算法基础篇】(二十六)数据结构封神!Trie 树从入门到爆杀算法题:拼音输入法、单词统计都靠它
数据结构·c++·算法·蓝桥杯·trie树·算法竞赛·acm/icpc
代码游侠11 分钟前
数据结构--队列
数据结构·笔记·学习·算法·链表
weixin_5214311215 分钟前
数据结构:树
数据结构
hweiyu0019 分钟前
数据结构:B树、B+树、B*树
数据结构
卿雪29 分钟前
Redis的数据类型 + 底层实现:String、Hash、List、Set、ZSet
数据结构·数据库·redis·python·mysql·缓存·golang
AI科技星39 分钟前
时空的几何之歌:论统一场论动量公式 P = m(C - V) 的完备重构、量化哲学诠释与终极验证
数据结构·人工智能·算法·机器学习·计算机视觉·重构
麒qiqi1 小时前
【数据结构详解】栈与队列的核心原理、实现及应用场景
数据结构
CQ_YM9 小时前
数据结构之单向链表
c语言·数据结构·链表