目录
性质3
二叉树的性质:
性质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个。
为了找双亲方便,有了下面的三叉链表(增设指针域)。
三叉链表:
只有根结点的双亲域为空,其他结点一定都有双亲。