实现如下图所示的二叉树的前序,中序,后序
#include<stdio.h>
#include<stdlib.h>
typedef char BTDataType;
typedef struct BinaryTreeNode
{
BTDataType data;
struct BinaryTreeNode *left;
struct BinaryTreeNode *right;
}BTNode;
void PrevOrder(BTNode *root);
void InOrder(BTNode *root);
void PostOrder(BTNode *root);
int main()
{
BTNode* A=(BTNode*)malloc(sizeof(BTNode));
A->data='A';
A->left=A->right=NULL;
BTNode* B=(BTNode*)malloc(sizeof(BTNode));
B->data='B';
B->left=B->right=NULL;
BTNode* C=(BTNode*)malloc(sizeof(BTNode));
C->data='C';
C->left=C->right=NULL;
BTNode* D=(BTNode*)malloc(sizeof(BTNode));
D->data='D';
D->left=D->right=NULL;
BTNode* E=(BTNode*)malloc(sizeof(BTNode));
E->data='E';
E->left=NULL;
E->right=NULL;
A->left=B;
A->right=C;
B->left=D;
B->right=E;
PrevOrder(A);
printf("\n");
InOrder(A);
printf("\n");
PostOrder(A);
printf("\n");
return 0;
}
void PrevOrder(BTNode *root)
{
if(root==NULL)
{
printf("NULL ");
return ;
}
printf("%c ",root->data);
PrevOrder(root->left);
PrevOrder(root->right);
}
void InOrder(BTNode *root)//中序
{
if(root==NULL)
{
printf("NULL ");
return ;
}
InOrder(root->left);
printf("%c ",root->data);
InOrder(root->right);
}
void PostOrder(BTNode *root)//后序
{
if(root==NULL)
{
printf("NULL ");
return ;
}
PostOrder(root->right);
PostOrder(root->left);
printf("%c ",root->data);
}
运行结果:

京公网安备 11010502036488号