C语言数据结构——二叉树

1、二叉树:是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。

2、二叉树的特点:
(1)每个结点最多有两棵子树,不存在度大于2的结点;
(2)左子树和右子树是有顺序的,次序不能任意颠倒;
(3)即使树中某个结点只有一棵子树也要区分它是左子树还是右子树。

3、二叉树具有五种基本形态:
(1)空二叉树;
(2)只有一个根节点;
(3)根节点只有左子树;
(4)根节点只有右子树;
(5)根节点既有左子树又有右子树。

4、特殊的二叉树:
(1)斜树:所有结点都只有左子树的二叉树叫做左斜树,所有结点都只有右子树的二叉树叫做右斜树。
(2)满二叉树:在一棵二叉树中所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树。【在同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多】
(3)完全二叉树:对于一棵具有n个结点的二叉树按层序编号,如果编号为 i (1<=i<=n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中的位置完全相同,则这课二叉树称为完全二叉树。

5、二叉树的性质:
(1)在二叉树的第 i 层上至多有2^(i-1)个结点;
(2)深度为 k 的二叉树至多有(2^k)-1个结点;
(3)对任何一棵二叉树T,如果其终端结点的数为n0,度为2的结点数为n2,则n0=n2+1。树T的结点总数为: n=n0+n1+n2;
(4)具有n个结点的完全二叉树的深度为[log2n]+1;
(5)若对于一棵有n个结点的完全二叉树的结点按层序编号,对于任意结点i有:【1】若i=1,则结点i是二叉树的根,无双亲;若i>1,则双亲是结点[i/2];【2】若2i>n,则结点i无左孩子,否则左孩子是结点2i;【3】若2i+1>n,则结点i无右孩子;否则右孩子是结点2i+1.

你可能感兴趣的:(数据结构,c语言,二叉树,c语言,数据结构,二叉树)