#include<stdio.h>
#include<stdlib.h>
int tag=0;
typedef struct tnode
{
char data;
struct tnode *lchild;
struct tnode *rchild;
}TNode;
/*
**建立二叉树
*/
TNode *
creat_tree()
{
TNode *p;
p=(TNode *)malloc(sizeof(TNode));
if(p==NULL){
printf("error!\n");
exit(0);
}
scanf("%c",&p->data);//输入ABD@F@@EG@@H@@C@@
if(p->data=='@')return NULL;
p->lchild=creat_tree();
p->rchild=creat_tree();
return p;
}
/*
**先序遍历二叉树
*/
void
first_tree(TNode *p)
{
if(p==NULL)return;
printf("%c ",p->data);
first_tree(p->lchild);
first_tree(p->rchild);
}
/*
**中序遍历二叉树
*/
void
middle_tree(TNode *p)
{
if(p==NULL)return;
middle_tree(p->lchild);
printf("%c ",p->data);
middle_tree(p->rchild);
}
/*
**后序遍历二叉树
*/
void
last_tree(TNode *p)
{
if(p==NULL)return;
last_tree(p->lchild);
last_tree(p->rchild);
printf("%c ",p->data);
}
/*
**查找函数
*/
void
search_tree(TNode *p,char data)
{
char value;
//tag=0;
if(p==NULL)return;
value=p->data;
if(value==data)tag=1;
search_tree(p->lchild,data);
search_tree(p->rchild,data);
}
int
main(void)
{
TNode *p;
p=creat_tree();
printf("先序输出:\n");
first_tree(p);
printf("\n中序输出:\n");
middle_tree(p);
printf("\n后序输出:\n");
last_tree(p);
printf("\n");
TNode *ptr;
ptr=(TNode *)malloc(sizeof(TNode));
if(ptr==NULL){
printf("error!\n");
exit(0);
}
printf("请输入查找节点的值:\n");
getchar();
scanf("%c",&ptr->data);
search_tree(p,ptr->data);
if(tag==0)printf("false!\n");
if(tag==1)printf("true!\n");
return 0;
}
追问遍历时可以注意一下格式么,,谢谢,麻烦了