问答题
[说明]
一般的树结构常采用孩子—兄弟表示法表示,即用二叉链表做树的存储结构,链表中节点的两个链域分别指向该节点的第一个孩子节点和下一个兄弟节点。例如,如图1-15(a)所示树的孩子—兄弟表示如图1-15(b)所示。

函数LevelTraverse()的功能是对给定树进行层序遍历。例如,对如图1-15所示的树进行层序遍历时,节点的访问次序为D B A E F P C。
对树进行层序遍历时使用了队列结构,实现队列基本操作的函数原型如表1-11所示。
Bool、Status类型定义如下:

树的二叉链表节点定义如下:

表1-11 实现队列基本操作的函数原型表 函数原型 | 说明 | void InitQueue (Queue *Q) | 初始化队列 | Bool IsEmpty (Queue Q) | 判断队列是否为空,若是则返回true,否则返回false | void EnQueue (Queue *Q, TreeNode p) | 元素入队列 | void DeQueue (Queue *Q, TreeNode *p) | 元素出队列 | |
[C函数程序]
【参考答案】
这是一道要求读者掌握树结构的存储及遍历运算的程序分析题。本试题的解答思路如下。
队列可以保证访问节点时按照层次......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)