树——二叉树的性质以及存储结构

目录

 

二叉树的性质

性质1

证明(归纳法)

性质2

3

性质4

举例

证明

性质5

举例

示意图

二叉树的存储结构

顺序存储结构

类型定义

缺点

链式存储结构

二叉链表

类型定义

三叉链表


二叉树的性质

性质1

第 i 层上至少1个结点。

证明(归纳法)

性质2

深度为 k 时至少 k 个结点。

性质3

让上述两个式子相等得:n2*2+n1*1+1=n2+n1+n0,消掉一个n2,再消掉一个n1

化简最终得:n2+1=n0 。

其实这个性质用的不多,但是这个证明过程是十分重要的。

性质4

举例:

上图中12这个结点的深度:对数12是一个位于3和4之间的数,则它的底为3(不小于三点多的最大整数),再加1就等于4,所以12结点的深度为4。

证明:

已知当第 k 层满时的前 k 层总共的结点数为2^k-1,同理,第 k-1 层满时前 k-1 层总共的结点数为2^(k-1)-1。

性质5

如果对一棵有n个结点的完全二叉树,将其结点按层序编号,(每层从左到右),则对任一结点 i (1<=i<=n)有:

举例:可以以图中的2号结点为例,其双亲是结点1,左孩子是结点4(2i),右孩子是结点5(2i+1)。

性质5表明了完全二叉树中双亲节点编号与孩子结点编号之间的关系。

示意图

二叉树的存储结构

顺序存储结构

适用于满二叉树和完全二叉树。

类型定义

举例:

这样存的目的是为了方便恢复回去

就像这样:

缺点

链式存储结构

二叉链表

每一个结点都有一个前驱 parent 和两个后继 lchild 和 rchild。

类型定义

举例:

空指针域个数的计算:

除根结点以外,其他结点都和其双亲的指针域有一条连线,所以共有n-1条连线,指向n-1个指针域,所以非空指针域有n-1个。

为了找双亲方便,有了下面的三叉链表(增设指针域)。

三叉链表

只有根结点的双亲域为空,其他结点一定都有双亲。

发布了23 篇原创文章 · 获赞 30 · 访问量 8674

猜你喜欢

转载自blog.csdn.net/l218623/article/details/104276350