一、结点
概念:节点是数据结构中的基础,是构成复杂数据结构的基本组成单位。
二、树
定义:树(Tree)是n(n>=0)个节点的有限集。n=0时称为空树。在任意一颗非空树中:
①有且仅有一个特定的称为根(Root)的结点;
②当n>1时,其余结点可分为m(m>0)个互不相交的有限集 T1、T2、...、Tn,其中每一个集合本身又是一颗树,并且称为根的子树。
此外,树的定义还需要强调以下两点:
①n>0时根结点是唯一的,不可能存在多个根结点,数据结构中的树只能有一个根结点。
②m>0时,子树的个数没有限制,但它们一定是互不相交的。
示例树:
由树的定义可以看出,树的定义使用了递归的方式。
递归在树的学习过程中起到了重要作用。
2.1 结点的度
结点拥有的子树数目称为结点的度。
图2.2中标注了图2.1所示树各个结点的度。
2.2 结点关系
结点子树的根结点为该结点的孩子结点。相应该结点称为孩子结点的双亲结点。
同一个双亲结点的孩子结点之间称为兄弟结点。
2.3 结点层次
从根开始定义起,跟为第一层,根的孩子为第二层,以此类推。
2.4 树的深度
树中结点的最大层次数称为树的深度或者高度。图2.1所示树的深度为4.
三、二叉树
定义:二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交、分别成为根节点的左子树和右子树组成。
图展示了一棵普通二叉树。

3.1二叉树特点
①每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点。
②左子树和右子树是有顺序的,次序不能任意颠倒。
③即使树中某结点只有一棵子树,也要区分它是左子树还是右子树。
3.2二叉树性质
①在二叉树的第i层上最多有2i-1 个结点。(i>=1)
②二叉树中如果深度为k,那么最多有 2k-1个结点。(k>=1)
③ n0=n2+1 n0,度数为0的结点数的数目等于度数为2的结点数加度数为1的结点数。
④在完全二叉树中,具有n个结点的完全二叉树的深度为[log2n]+1,其中[log2n]是向下取整。
⑤若对含n个结点的完全二叉树从上到下且从左至右进行1至n的编号,则对完全二叉树中任意一个编号为i的结点有如下特性:
a.若i=1,则该结点事二叉树的根,无双亲,否则,编号为[i/2]的结点为其双亲结点;
b.若2i>n,则该结点无左孩子,否则,编号为2i的结点为其左孩子结点
c. 若 2i+1>n,则该结点无右孩子结点, 否则,编号为2i+1 的结点为其右孩子结点。
3.3斜树
所有结点都是左子树的二叉树叫左斜树。所有结点都是右子树的二叉树叫右斜树。两者统称为斜树。
3.4 满二叉树
在一棵二叉树中。如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树成为满二叉树。
特点:
①叶子只能出现在最下一层,出现在其他层就不能达成平衡。
②非叶子结点的度一定是2。
③在同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多。

3.5完全二叉树
对一棵具有n个结点的二叉树按层编号,如果编号为i(1<=i<=n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同,则这棵二叉树称为完全二叉树。
特点:
①叶子结点只能出现在最下层和次下层。
②最下层的叶子结点集中在树的左部。
③倒数第二层若存在叶子结点,一定在右部连续位置。
④如果结点度为1,则该结点只有左子树,即没有右子树。
⑤同样结点数目的二叉树,完全二叉树深度最小。
ps:满二叉树一定是完全二叉树,但反过来不一定成立。
