数据结构——树(c)

👍数据结构——树(c)


一、树

1.树的定义

是n(n>=0)个结点的有限集合(可以是空集),在任一棵非空树中:
(1)有且仅有一个称为的结点
(2)其余结点可分为互不相交的子集,而且这些子集本身又是一棵树,称为根的子树

空树:结点数为0的树。

逻辑结构看:
(1)树中只有树根没有父结点,除树根外,其余结点都有且仅有一个父结点
(2)树中的结点,可以有零个或多个孩子结点,没有孩子的结点称为叶子结点,或终端结点
(3)除根外的其他结点,都存在唯一一条从根到该结点的路径

2.基本术语

树的结点:包含一个数据元素及若干指向子树的分支

祖先结点:从根到该结点所经分支上的所有结点
子孙结点:以某结点为根的子树中任一结点都称为该结点的子孙
父结点 / 双亲结点:B是A的孩子,则A是B的父亲
孩子结点:结点的子树的根称为该结点的孩子
兄弟结点:同一双亲的孩子结点
堂兄弟结点:其父结点在同一层上的结点

两个结点之间的路径:只能从上往下
路径长度:路径经过的边数
树的路径长度:是指从根结点到树中每个叶结点的路径长度之和

属性
结点的层次(深度):从上往下数(第几层)
结点的高度:从下往上数
树的高度(深度):总共多少层
结点的度:结点的孩子数目
树的度:各结点的度的最大值

有序树:从逻辑上看,树中结点的各子树从左至右是有次序的,不能互换。
无序树:从逻辑上看,树中结点的各子树从左至右是无次序的,可以互换。
:n(n>=0)个结点的有限集合(可以是空树)。
森林:m(m>=0)棵互不相交的树的集合(可以是空森林)。

3.树的性质

1.结点数 = 总度数 + 1
2.树的度为mm叉树

度为m的树 m叉树
任意结点的度<=m(最多m个孩子) 任意结点的度<=m(最多m个孩子)
至少有一个结点度=m 允许所有结点的度都<m
一定是非空树,至少有m+1个结点 可以是空树
第 i 层至多有 m i − 1 m^{i-1} mi1个结点(i>=1) 第 i 层至多有 m i − 1 m^{i-1} mi1个结点(i>=1)
高度为h的度为m的树至多有 m h − 1 m − 1 \displaystyle\frac{m^h-1}{m-1} m1mh1个结点 高度为h的m叉树至多有 m h − 1 m − 1 \displaystyle\frac{m^h-1}{m-1} m1mh1个结点
高度为h的度为m的树至少有h+m-1个结点 高度为h的m叉树至少有h个结点
有n个结点的m叉树的最小高度为 ⌈ l o g m ( n ( m − 1 ) + 1 ) ⌉ ⌈log_m(n(m-1)+1)⌉ logm(n(m1)+1)⌉

4.树的基本运算

1.求树的根结点

2.求树的高度

3.找指定结点的父结点

4.找指定结点的孩子结点

5.在树中插入、删除一个结点

6.遍历树

7…

5.表示

  1. 嵌套集合形式。
  2. 广义表形式:根作为由子树森林组成的表的名字写在表的左边。
  3. 凹入表示法。(类似于书的编目)

二、二叉树

1.二叉树的定义

二叉树 要么为空,要么由根节点、左子树和右子树组成。
注:
  ①左、右子树本身。
  ②二叉树的子树有严格的左右之分,而树没有(二叉树是有序树)。

度为2的有序数不等同于二叉树:
①度为2的树至少有3个结点,二叉树可以为空。
②结点的位置:
  度为2的有序数的孩子的左右次序是相对于另一孩子而言的,若某个结点只有一个孩子,则这个孩子就无需区分其左右次序。
  二叉树则无论孩子个数是否为2,均需确定其左右次序,即二叉树的结点次序是确定的。

2.几种特殊的二叉树

(1)满二叉树 一颗深度为 k 且有   2 k − 1   \ 2^{k}-1\,  2k1个结点的二叉树。
特点
  ①只有最后一层有叶子结点
  ②不存在度为1的结点
  ③按层序从1开始编号,结点i的左孩子为2i,右孩子为2i+1,结点i的父结点为⌊i/2⌋

(2)完全二叉树 深度为 k 的,有 n 个结点的二叉树,当且仅当其每一个结点都与深度为 k 的满二叉树中编号从 1 ~ n 的结点一一对应时,称之为完全二叉树。
特点
  ①只有最后两层可能有叶子结点
  最多只有一个度为1的结点,且该结点只有左孩子,而无右孩子
  ③若n为奇数,则每个分支都有左孩子和右孩子,若n为偶数,则编号最大的分支结点(n/2)只有左孩子,没有右孩子。
  ④按层序从1开始编号,结点i的左孩子为2i,右孩子为2i+1,结点i的父结点为⌊i/2⌋
  ⑤i≤⌊n/2⌋为分支结点,i>⌊n/2⌋为叶子结点。一旦出现某个结点i为叶结点或只有左孩子,则编号大于i的结点均为叶结点。

(3)二叉排序树 一棵二叉树或者空二叉树,或者是具有如下性质的二叉树:
  ①左子树上所有结点的关键字均小于根结点的关键字
  ②右子树上所有结点的关键字均大于根结点的关键字
  ③左子树和右子树又各是一颗二叉排序树
注:二叉排序树可用于元素的排序、搜索。

(4)平衡排序树 树上任一结点的左子树和右子树的深度之差不超过1。
注:平衡二叉树具有更高的搜索效率。

3.性质

(1)二叉树
在二叉树的第 i 层上至多有   2 i − 1   \ 2^{i-1}\,  2i1个结点
深度为 h 的二叉树至多有   2 h − 1   \ 2^{h}-1\,  2h1个结点
任何一个二叉树中度为2的结点数目比度为0的结点数目少1。(可推广度为3…n)
  即:设非空二叉树中度为0、1、2的结点个数分别为 n 0 、 n 1 、 n 2 n_0、n_1、n_2 n0n1n

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值