基本术语:
结点:不仅包含数据元素,而且包含指向子树的分支。
结点的度:结点拥有子树个数或者分支的个数。
树的度:树中各结点的度的最大值。
叶子结点(终端结点):指度为0的结点。
非终端结点(分支结点):指度不为0的结点。
孩子:结点的子树的根。
双亲:与孩子结点定义对应。
兄弟:同一个双亲的孩子之间互为兄弟。
祖先:从根到某结点的路径上的所有结点,都是这个结点的祖先。
子孙:以某结点为根的子树中的所有结点,都是这个结点的子孙。
层次:从根开始,根为第一层,根的孩子为第二层,根的孩子的孩子为第三层,以此类推。
树的高度(或者深度):树中结点的最大层次。
结点的深度和高度:
1.结点的深度是从根结点到该结点路径上的结点个数。
2.从某结点往下走可能到达多个叶子结点,其中最长的那条路径的长度即为该结点在树中的高度。
3.根结点的高度为树的高度。
堂兄弟(sibling):双亲在同一层的结点互为堂兄弟。
有序树:树中结点的子树从左到右是有次序的,不能交换,这样的树叫做有序树。
无序树:树中结点的子树没有顺序,可以任意交换,这样的数叫做无序树。
丰满树:即理想平衡树,要求除最底层外,其他层都是满的。
森林:有若干棵互不相交的树的集合。
树的顺序存储结构中最简单直观的是双亲存储结构,用一维数组即可实现。
数组下标表示树中的结点,数组元素的内容表示该结点的双亲结点,这样就有了结点(下标)以及结点之间的关系(内容),也就可以表示一棵树了。
树的链式存储结构最常用的有一下两种:
1.孩子存储结构
2.孩子兄弟存储结构
二叉树
1)每个结点最多只有两棵子树
2)子树有左右顺序之分
满二叉树:所有的分支结点都有左孩子和右孩子结点,