通用树结构是采用双亲孩子表示法模型建立的:
每个结点都有一个指向其双亲的指针每个结点都有若干个指向其孩子的指针可以建立另一种树结构模型,新模型更简单:
孩子兄弟表示法模型:
每个结点都有一个指向其第一个孩子的指针每个结点都有一个指向其第一个右兄弟的指针每个结点包含一个数据指针和两个结点指针:
数据指针:指向保存于树中的数据孩子结点指针:指向第一个孩子兄弟结点指针:指向第一个右兄弟这样就不需要在节点结构中包含子节点链表。
孩子兄弟表示法的特点: 能够表示任意的树形结构 每个结点中有且仅有三个指针域 • 数据指针,孩子结点指针,兄弟结点指针 每个结点的结构简单: • 只有孩子结点指针和兄弟结点指针构成了“树杈”
这样通过孩子兄弟表示发,通用树结构转化为了二叉树结构。
定义:
定义1 , 满二叉树 (Full Binary Tree) 如果二叉树中所有分支结点的度数都为2,且叶子结点都在同一层次上,则称这类二叉树为满二叉树。
定义2 , 完全二叉树 (Complete Binary Tree) 如果一棵具有n个结点的高度为k的二叉树,它的每一个结点都与高度为k的满二叉树中编号为1—n的结点一一对应,则称这棵二叉树为完全二叉树。(从上到下从左到右编号)
如下图所示:
完全二叉树的叶结点仅出现在最下面两层。 最下层的叶结点一定出现在左边 倒数第二层的叶结点一定出现在右边
完全二叉树中度为1的结点只有左孩子。 同样结点数的二叉树,完全二叉树的高度最小。
满二叉树一定是完全二叉树,反之不成立。
通用树结构还可以根据孩子兄弟表示法实现。 孩子兄弟表示法的本质是将通用树转化为二叉树。 二叉树是最多只有两个孩子的树。
