一、树的相关概念
树的定义
树具有两个特点:
(1)树的结点没有前驱结点,除根结点之外的所有结点有且只有一个前驱结点
(2)树中所有结点可以有零个或多个后继结点。
由此可知,下列图示都不是树结构
二、二叉树
1.二叉树的定义
2.二叉树的相关术语
(1)满二叉树
(2)完全二叉树
3.二叉树的主要性质
性质一:一棵非空二叉树的第i层上最多有2的i-1次方个结点(i>=1)
性质二:一棵深度为k的二叉树,最多有2的k次方-1个结点
性质三:对于一棵非空二叉树,若叶子结点数为n0,度数为2的结点数为n2,则有:n0=n2+1
证明
设n为二叉树的结点总数,n1为二叉树中度为1的结点数,则
n=n0+n1+n2
在二叉树中,除根结点外,其余结点都有唯一的一个进入分支。设B为二叉树的分支数,则
B=n-1
这些分支是由度为1和度为2的结点发出的,一个度为1的结点发出一个分支,一个度为2的结点发出两个分支,所以有
B=n1+2n2
联立上面三个式子可得到n0=n2+1
性质四:具有n个结点的完全二叉树的深度k为
其中log2n的左右两侧的符号指向下取整
证明
性质五:
3.二叉树的存储
1.顺序存储结构
2.链式存储结构
(1)二叉链表存储
下图a给出一棵二叉树的二叉链表存储表示。二叉链表也可以以带头结点的方式存放,如图b所示
(2)三叉链表存储
每个结点由四个域组成,具体结构为
下面给出一棵二叉树的三叉链表存储示意图
4.二叉树基本运算的实现