前三个 中序 先序 后序遍历直接递归就可以了
最后一个层次遍历 可以把每一层 用数组存起来,容易实现
(注: 博客作为交流使用,请勿抄袭应付作业)
/* 你的代码将被嵌在这里 */
void InorderTraversal( BinTree BT ) {
if(BT == NULL) return;
InorderTraversal(BT->Left);
printf(" %c", BT->Data);
InorderTraversal(BT->Right);
}
void PreorderTraversal( BinTree BT ) {
if(BT == NULL) return;
printf(" %c", BT->Data);
PreorderTraversal(BT->Left);
PreorderTraversal(BT->Right);
}
void PostorderTraversal( BinTree BT ) {
if(BT == NULL) return;
PostorderTraversal(BT->Left);
PostorderTraversal(BT->Right);
printf(" %c", BT->Data);
}
BinTree aa[10000], bb[10000];
int a, b;
#include<string.h>
void print() {
memset(bb, NULL, sizeof bb);
b = 0;
for(int i = 0; i < a; ++i) {
if(aa[i] != NULL) printf(" %c", aa[i]->Data);
if(aa[i]->Left != NULL) bb[b++] = aa[i]->Left;
if(aa[i]->Right != NULL) bb[b++] = aa[i]->Right;
}
a = b;
for(int i = 0; i < b; ++i)
aa[i] = bb[i];
}
void LevelorderTraversal( BinTree BT ) {
if(BT == NULL) return;
a = 1; b = 0;
aa[0] = BT;
while(a) print();
}