// 链式二叉树.cpp : 定义控制台应用程序的入口点。
//
/*对这个二叉树进行遍历
A
/ \
B C
\ \
D E
*/
#include "stdafx.h"
#include
typedef char eleType;
typedef struct Node
{
struct Node *RChild;
struct Node *LChild;
eleType data;
}BiNode,*BiTree;
BiTree CreateTree(void)
{
BiTree A,B,C,D,E;
A = (BiNode *)malloc(sizeof(BiNode));
B = (BiNode *)malloc(sizeof(BiNode));
C = (BiNode *)malloc(sizeof(BiNode));
D = (BiNode *)malloc(sizeof(BiNode));
E = (BiNode *)malloc(sizeof(BiNode));
A->data = 'A';
B->data = 'B';
C->data = 'C';
D->data = 'D';
E->data = 'E';
A->LChild = B;
A->RChild = C;
B->LChild = NULL;
B->RChild = D;
C->LChild = NULL;
C->RChild = E;
D->LChild = D->RChild = NULL;
E->LChild = E->RChild = NULL;
return A;
}
void Visit(eleType data)
{
printf("%c",data);
}
//先序遍历
void PreOrder(BiTree root)
{
if(root != NULL)
{
Visit(root->data);//访问根节点
PreOrder(root->LChild);
PreOrder(root->RChild);
}
}
//中序遍历
void InOrder(BiTree root)
{
if(root != NULL)
{
InOrder(root->LChild);
Visit(root->data);
InOrder(root->RChild);
}
}
//后序遍历
void PostOrder(BiTree root)
{
if(root != NULL)
{
PostOrder(root->LChild);
PostOrder(root->RChild);
Visit(root->data);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
BiTree T;
T = CreateTree();
printf("先序遍历:\n");
PreOrder(T);
printf("\n");
printf("中序遍历:\n");
InOrder(T);
printf("\n");
printf("后序遍历:\n");
PostOrder(T);
printf("\n");
return 0;
}