本试验取材于浙江大学《数据结构》,内含表示及遍历的测试源码!
//树的实现上
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef int ElementType;
typedef struct TNode *Position;
typedef Position BinTree; /* 二叉树类型 */
struct TNode{ /* 树结点定义 */
ElementType Data; /* 结点数据 */
BinTree Left; /* 指向左子树 */
BinTree Right; /* 指向右子树 */
};
void InorderTraversal( BinTree BT )
{
if( BT ) {
InorderTraversal( BT->Left );
/* 此处假设对BT结点的访问就是打印数据 */
printf("%d ", BT->Data); /* 假设数据为整型 */
InorderTraversal( BT->Right );
}
}
void PreorderTraversal( BinTree BT )
{
if( BT ) {
printf("%d ", BT->Data );
PreorderTraversal( BT->Left );
PreorderTraversal( BT->Right );
}
}
void PostorderTraversal( BinTree BT )
{
if( BT ) {
PostorderTraversal( BT->Left );
PostorderTraversal( BT->Right );
printf("%d ", BT->Data);
}
}
int main()
{
BinTree Bt = (BinTree)malloc(sizeof(struct TNode));
BinTree Bt1 = (BinTree)malloc(sizeof(struct TNode));
BinTree Bt2 = (BinTree)malloc(sizeof(struct TNode));
BinTree Bt3 = (BinTree)malloc(sizeof(struct TNode));
BinTree Bt4 = (BinTree)malloc(sizeof(struct TNode));
Bt->Data = 1;
Bt1->Data=2;
Bt2->Data=3;
Bt3->Data=4;
Bt4->Data=5;
Bt->Left = Bt1;
Bt->Right = Bt2;
Bt1->Left = NULL;
Bt1->Right = NULL;
Bt2->Left = Bt3;
Bt2->Right = Bt4;
Bt3->Left = NULL;
Bt3->Right = NULL;
Bt4->Left = NULL;
Bt4->Right = NULL;
printf("\nzhong xu bian li\n");
InorderTraversal(Bt);
printf("\nhou xu bian li\n");
PostorderTraversal(Bt);
printf("\nxian xu bian li \n");
PreorderTraversal(Bt);
printf("\n");
return 0;
}