数 据 结 构(C语言版)
一、 二叉树的定义
1.定义
二叉树是有n(n>=0)个结点的有限集合。
(1)不存在度大于2的结点;
(2)其子树有左右之分,不能颠倒;
(3)左子树和右子树同样又都是二叉树。
通俗地讲:在一棵非空的二叉树中,每个结点至多只有两棵子树,分别称为左子树和右子树,且左右子树的次序不能任意交换。所以,二叉树是特殊的有序树。
2.二叉树的形态
其中: (a)空二叉树;
(b)仅有根结点的二叉树;
(c)右子树为空的二叉树;
(d)左子树为空的二叉树;
(e)左、右子树均非空的二叉树。
3. 二叉树与一般树型结构的主要区别在于:
(1)二叉树中每个非空结点最多只有两个子女,而一般的树型结构中每个非空结点可以有0到多个子女;
(2)二叉树中结点的子树要区分左子树和右子树, 即使在结点只有一棵子树的情况下也要明确指出是左子树还是右子树。
二、 二叉树的基本性质
性质1 一棵非空二叉树的第i层上至多有2i-1个结点 (i≥1)。
性质2 深度为h的二叉树至多有2h-1个结点(h>1)。
性质3 对于任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。