本题要求给定二叉树的4种遍历。 函数接口定义: void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); void PostorderTraversal( BinTree BT ); void LevelorderTraversal( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ElementType Data; BinTree Left; BinTree Right; }; 要求4个函数分别按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。
时间: 2024-03-25 16:41:48 浏览: 89
以下是该题的C语言题解:
```
// 中序遍历
void InorderTraversal(BinTree BT) {
if (BT) {
InorderTraversal(BT->Left);
printf(" %c", BT->Data);
InorderTraversal(BT->Right);
}
}
// 先序遍历
void PreorderTraversal(BinTree BT) {
if (BT) {
printf(" %c", BT->Data);
PreorderTraversal(BT->Left);
PreorderTraversal(BT->Right);
}
}
// 后序遍历
void PostorderTraversal(BinTree BT) {
if (BT) {
PostorderTraversal(BT->Left);
PostorderTraversal(BT->Right);
printf(" %c", BT->Data);
}
}
// 层序遍历
void LevelorderTraversal(BinTree BT) {
if (!BT) return;
Queue Q = CreateQueue();
BinTree T;
Enqueue(Q, BT);
while (!IsEmpty(Q)) {
T = Dequeue(Q);
printf(" %c", T->Data);
if (T->Left) Enqueue(Q, T->Left);
if (T->Right) Enqueue(Q, T->Right);
}
}
```
该题要求实现四种二叉树遍历算法,分别为中序遍历、先序遍历、后序遍历和层序遍历,并按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。具体实现中,中序遍历、先序遍历和后序遍历使用递归算法实现,层序遍历使用队列实现。
阅读全文