树的定义:树是n个结点的集合,集合中有一个成为根的特殊结点,在根结点下分布着一些互不相交的集合,每个集合又是一个树,这些树成为根结点的子树。
上面的定义可以看出树采用了递归的描述,还有比较特殊的如空集合也是树,成为空树,即没有结点;单一结点是一棵树,树根就是该结点的本身。
在树中一个结点只有一个前驱,但有多个后继,树中有且仅有一个结点没有前驱,即树的根结点,,除了根结点,其余每个节点有且仅有一个前驱,每个结点可以有任意多个后继。
树的常见术语:
父结点,子结点,兄弟结点:每个结点的子树成为该结点的子结点(儿子),相应的该结点成为子结点的父结点(父亲),具有同一父结点的结点成为兄弟节点。上图中A是B,C,D的父结点,BCD是兄弟结点。
结点的度:一个结点的子树的数量称为结点的度,结点A有3个子树,A的度为3.
树的度:树中结点最大的度数,上图中树的度为3.
树的深度:指的是树的最大层数,上图中做大层数为4,则树的深度为4。
二叉树:一个二叉树是n个结点的集合,此集合要么是空集,要么是一个根结点加上分别成为左子树和右子树的两个互不交叉的二叉树。
由上述定义可知,二叉树的任意结点只能有两个子结点;如果只有一个子结点只能是左子树或是右子树
两种特殊的二叉树:一种是满二叉树,除最下一层的叶结点外,每层的结点都有2个子结点,这样就构成了满二叉树。 第二种是完全二叉树,除了二叉树最后一层外,其他各层的结点树都达到最大个数,且最后一层从左到右的结点连续存放,只缺右侧若干结点,这叫完全二叉树。满二叉树是完全二叉树,完全二叉树不一定是满二叉树;在完全二叉树中,若某个结点没有左孩子,则肯定也没有右孩子,则肯定是叶结点。
完全二叉树如下图:
二叉树的性质:
1.在二叉树中,第i层的结点总数最多有2i-1(i>=1)