小白的数据结构与算法学习笔记(十九)----二叉树的性质与存储结构

一、性质

1、在二叉树的第i层上至多有2^(^i^-^1^)个结点(i>=1)

2、深度为k的二叉树至多有2^k-1个结点(k>=1)

注:以上两条考虑满二叉树即可

3、对任意一棵二叉树,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1

证明:
设度为1的结点数为n1,则二叉树结点总数为n=n0+n1+n2
总连接数=n-1=n1+2*n2
所以n0+n1+n2-1=n1+n2+n2
所以n0=n2+1

4、具有n个结点的完全二叉树的深度为\left \lfloor log 2n \right \rfloor+1

      具有n个结点的满二叉树的深度为\log 2(n+1)

证明:
深度为k的完全二叉树的结点个数应介于深度为k-1的满二叉树结点数与深度为k的满二叉树结点数之间,
即2^(k-1)-1<=n<=2^k-1
由于n是整数,故2^(k-1)<=n<2^k
不等式两边同时取对数,得k-1<=log2n<k
由于k必取整,故k=所求

5、如果对一棵有n个结点的完全二叉树按层序编号,则对任一结点i(1<=i<=n)有以下性质:

  • 若i=1,结点i为二叉树的根,无双亲;若i>1,其双亲为\left \lfloor i/2 \right \rfloor
  • 若2i>n,则结点i无左孩子,即结点i为叶子结点;否则其左孩子为2i
  • 若2i+1>n,则结点i无右孩子;否则其右孩子结点为2i+1

二、存储结构

前面我们介绍树的存储结构曾说由于双亲,孩子,兄弟之间的复杂关系,无法用简单的顺序存储结构或链式存储结构存储。但是由于二叉树结构的特殊性,使得顺序存储与链式存储都能简单实现

1、顺序存储结构

二叉树的顺序存储就是用一维数组存储二叉树中的各个结点,并且完全二叉树结点的存储位置能体现结点直接的逻辑关系,对于一般二叉树,尽管层序编号不能反映逻辑关系,但也能按照完全二叉树编号方式修改,不存在结点用“^"代替即可。

2、链式存储(二叉链表)

二叉链表结点=左孩子指针域+数据域+右孩子指针域

typedef struct BiTNode
{
    ElemType data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

                                                                                                                                                 BY   ZJQ

猜你喜欢

转载自blog.csdn.net/qq_41641805/article/details/81701895