树和二叉树基本概念

一.树
树的概念:它是一类重要的非线性结构(可以一对多,也可以多对多),树中之间具有明确的层次关系,并且节点之间有分支。可以笼统的介绍为:n个结点的有限集合(n>=0)n为0时为空树。树中有一个根结点,它没有直接前驱,有零个或多个直接后继,根结点之外的n-1个结点可以划分成m个互不相交的有限集,这些有限集称为根的子树(子树互不相交)。

它的表示法可以使树形表示法,嵌套集合表示法,也可以是凹行表示法,也可以是广义表表示法。

图示:
树形表示法
**加粗样式

嵌套集合表示法
在这里插入图片描述

凹行表示法就是用柱状图表示

广义表和嵌套表示法很相似,根节点在最左边。

树的特点:

1.每个结点有零个或多个子结点;

2.没有父结点的结点为根结点;

3.每一个非根结点只有一个父结点;

4.每个结点及其后代结点整体上可以看做是一棵树,称为当前结点的父结点的一个子树。

树的常用语

1.根结点:没有双亲节点的结点

2.孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点

3.双亲结点:若一个节点含有子节点,则这个节点称为其子节点的父节点

4.节点的度:一个节点含有的子树的个数称为该节点的度

5.叶结点:度为0的结点称为叶结点,也可以叫做终端结点

6.分支结点:度不为0的结点称为分支结点,也可以叫做非终端结点

7.结点的层次:从根结点开始,根结点的层次为1,根的直接后继层次为2,以此类推

8.结点的层序编号:将树中的结点,按照从上层到下层,同层从左到右的次序排成一个线性序列,把他们编成连续的自然数

9.树的度:树中所有结点的度的最大值

10.树的高度(深度):树中结点的最大层次

11.森林:m(m>=0)个互不相交的树的集合,将一颗非空树的根结点删去,树就变成一个森林;给森林增加一个统一的根结点,森林就变成一棵树

12.兄弟结点:同一双亲结点的孩子结点间互称兄弟结点。

二.二叉树
二叉树的概念:是n(n>=0)个节点的有限集合,它的每个节点至多只有两棵子树,它或者是空集,或者是由一个根节点以及两棵互不相交的分别称作这个根的左右子树的二叉树组成。
在这里插入图片描述

特殊二叉树
1.完全二叉树:
概念:对于层数(n>=2)的树,其n-1层符合满二叉树,第n层结点必须满足从左向右都连续

在这里插入图片描述
1.若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
2.如果有度为 1 的结点,那只可能有一个,且该节点只有左孩子,而无右孩子

满二叉树:
核心点是 “满”
概念:每一层的结点都达到最大值**,且第n层的结点数量符合公式2^(n-1),层数是从1开始。
在这里插入图片描述
1.定义: 高度为h,并且含有(2^h)-1个结点的二叉树
2.对于编号为 i 的结点,如果有双亲,双亲为 i/2 向下取整;如果有左孩子,左孩子编号为 2i,如果有右孩子,右孩子编号为 (2i + 1)

其他二叉树类型:
在这里插入图片描述

二叉树的性质及其推导:
性质1:二叉树第i层上的结点数目最多为 2^{i-1} (i≥1)
证明:下面用"数学归纳法"进行证明。
(01) 当i=1时,第i层的节点数目为2{i-1}=2{0}=1。因为第1层上只有一个根结点,所以命题成立。
(02) 假设当i>1,第i层的节点数目为2^{i-1}。这个是根据(01)推断出来的!
下面根据这个假设,推断出"第(i+1)层的节点数目为2{i}“即可。
由于二叉树的每个结点至多有两个孩子,故"第(i+1)层上的结点数目” 最多是 “第i层的结点数目的2倍”。 即,第(i+1)层上的结点数目最大值=2×2^{i-1}=2{i}。
故假设成立,原命题得证!

性质2:深度为k的二叉树至多有2^{k}-1个结点(k≥1)
证明:在具有相同深度的二叉树中,当每一层都含有最大结点数时,其树中结点数最多。利用"性质1"可知, 深度为k的二叉树的结点数至多为:
20+21+…+2k-1=2k-1
故原命题得证!

性质3:包含n个结点的二叉树的高度至少为log2 (n+1)
证明:根据"性质2"可知,高度为h的二叉树最多有2^h–1个结点。反之,对于包含n个节点的二叉树的高度至少为log2(n+1)。

性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1
证明:因为二叉树中所有结点的度数均不大于2,所以结点总数(记为n)=“0度结点数(n0)” + “1度结点数(n1)” + “2度结点数(n2)”。由此,得到等式一。
(等式一) n=n0+n1+n2
  另一方面,0度结点没有孩子,1度结点有一个孩子,2度结点有两个孩子,故二叉树中孩子结点总数是:n1+2n2。此外,只有根不是任何结点的孩子。故二叉树中的结点总数又可表示为等式二。
(等式二) n=n1+2n2+1
由(等式一)和(等式二)计算得到:n0=n2+1。原命题得证!

性质5:
树的边的个数比节点数少一个,节点个数于节点边的关系: N个节点的树有N-1个边.
边与度的关系:N - 1 = 0N0+1N1 + 2 * N2+3N3+……+KNK

三.线索二叉树
按照某种遍历方式对二叉树进行遍历,可以把二叉树中所有节点排列为一个线性序列。
在该序列中,除第一个节点外,每个节点有且仅有一个直接前驱节点;除最后一个节点外,每个节点有且仅有一个直接后继节点。但是,二叉树中每个节点在这个序列中的直接前驱节点和直接后继节点是什么,二叉树的存储结构中并没有反映出来,只能在对二叉树遍历的动态过程中得到这些信息。
为了保留节点在某种遍历序列中直接前驱和直接后继的位置信息,可以利用二叉树的二叉链表存储结构中的那些空指针域来指示。这些指向直接前驱节点和指向直接后继节点的指针被称为线索(thread),加了线索的叉树称为线索二叉树 [8] 。
线索二叉树将为二叉树的遍历提供许多遍历 [8]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值