#include <stdio.h>
#include <string.h>
#include <malloc.h>
typedef char TypeData;
typedef struct TreeNode
{
TypeData data;
struct TreeNode *lch,*rch;
}TreeNode;
TreeNode *CreateTree();
void PreOrderTraval(TreeNode* pTree);//先序遍历
void InOrderTraval(TreeNode* pTree);//中序遍历
void PostOrderTraval(TreeNode* pTree);//后序遍历
void main()
{
TreeNode *tree=NULL;
printf("请输入一棵二叉树(先序建立):");//abd##e##cf##g##
tree=CreateTree();
PreOrderTraval(tree);
printf("\n\n");
InOrderTraval(tree);
printf("\n\n");
PostOrderTraval(tree);
printf("\n\n");
}
TreeNode *CreateTree()
{
char ch;
TreeNode *root;
scanf("%c",&ch);
if(ch=='#')
{
root=NULL;
}
else
{
root=(TreeNode *)malloc(sizeof(TreeNode));
root->data=ch;
root->lch=CreateTree();
root->rch=CreateTree();
}
return root;
}
void PreOrderTraval(TreeNode* pTree)//先序遍历
{
if(pTree!=NULL)
{
printf("%c\t",pTree->data);
PreOrderTraval(pTree->lch);
PreOrderTraval(pTree->rch);
}
}
void InOrderTraval(TreeNode* pTree)//中序遍历
{
if(pTree!=NULL)
{
InOrderTraval(pTree->lch);
printf("%c\t",pTree->data);
InOrderTraval(pTree->rch);
}
}
void PostOrderTraval(TreeNode* pTree)//后序遍历
{
if(pTree!=NULL)
{
PostOrderTraval(pTree->lch);
PostOrderTraval(pTree->rch);
printf("%c\t",pTree->data);
}
}
树
最新推荐文章于 2024-12-21 05:00:00 发布