树的定义
树(tree)是一种抽象数据类型(ADT)或是视作这个数据类型的数据结构,用来模拟拥有树状结构的数据集合 它是由n(n>=1)个有限的结点组成的一个层次关系的集合。 把它叫做树是因为是看起来像树,根在上,而叶朝下的,它具有一下的特点 : 1、每个节点都有零个或者多个子节点 2、没有父节点的节点叫做根节点 3、除了根节点之外,每个字节点可以分为多个不想交的子树 4、除了根节点之外,每个节点只有一个父节点
图一
在图1,该树一共有13个节点,其中A是根,其余节点分成3个互不相交的子集: T1={B,E,F,K,L},T2={C,G},T3={D,H,I,J,M};T1,T2和T3都是根A的子树,且本身也是一棵树。 例如T1,其根为B,其余节点分为两个互不相交的子集;T11={E,K,L},T12={F}。 T11和T12都是B的子树。而在T11中E是根,{K}和{L}是E的两棵互不相交的子树,其本身又是只有一个根节点的树。
上述观察实际上给了我们一种严格的定义方法:
1、树是元素的集合 2、该集合可以为空,这时候树中没有元素,我们成它为空树(empty tree) 3、如果该集合不为空,那么该集合有一个根节点,以及0个或者多个子树,根节点和它的子节点用一条边(edge)连接
上面几点使用的递归定义 的树,也就是在定义树的过程中使用了树(子树)本身,由于树的递归特征,许多树的相关操作也可以方便的实现递归实现
基本术语
1、节点的度 :一个节点所含有的子树 2、树的度 :一棵树的所有节点中最大的度 3、叶节点或终端节点 :度为零的节点 4、父亲节点或者父节点 :若一个节点含有子节点,就称这个节点为这些子节点的父节点(自身的上一级) 5、孩子节点或子节点 :父亲节点的子节点(自身的下一级) 6、兄弟节点 :同一个父节点 7、节点的层次 :从根开始定义起,根为第一层,根的子节点为第二层,以此类推 8、树的高度或深度 :树中节点的最大层次 9、堂兄弟节点 :父节点在同一层次的节点 10、节点的祖先 :从根节点到该节点分支上的所有节点 11、子孙 :自身的所有下一级节点 12、森林 :由m(m>=0)棵互不相交的树的集合
性质
1、在二叉树的第i层上至多有2的(k-1) 个节点(i>0)(也就是2的层数-1次方) 2、深度(高度)为k的二叉树至多有2的k次方 -1 个节点 (k >0)(从第一层累加,加到k层) 3、对于任意一棵二叉树,如果其叶节点数位N0,而度数位2的结点总数为N2,则N0=N2+1 4、具有n个结点的完全二叉树的深度必为log2(n+1) 5、
|