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