中序遍历:ADEFGHMZ
后序遍历:AEFDHZMG
写出二叉树的输入遍历程序
#ifndef __1_H__
#define __1_H__
typedef char datatype;
typedef struct Node
{
datatype data;
struct Node*left;
struct Node*right;
}Node,*Btree;
//创建二叉树
Btree Btree_create();
//遍历二叉树
void Btree_prio(Btree p);
void Btree_in(Btree p);
void Btree_post(Btree p);
#endif
//**************************************************************************************
#include <stdio.h>
#include <stdlib.h>
#include "1.h"
//创建二叉树
Btree Btree_create()
{
char a;
scanf("%c",&a);
if(a=='#')
{
return NULL;
}
Btree p=(Btree)malloc(sizeof(Node));
p->data=a;
p->left=Btree_create();
p->right=Btree_create();
return p;
}
//前序遍历
void Btree_prio(Btree p)
{
if(p==NULL)
{
return;
}
printf("%c",p->data);
Btree_prio(p->left);
Btree_prio(p->right);
}
//中序遍历
void Btree_in(Btree p)
{
if (p==NULL)
{
return;
}
Btree_in(p->left);
printf("%c",p->data);
Btree_in(p->right);
}
//后序遍历
void Btree_post(Btree p)
{
if(p==NULL)
{
return;
}
Btree_post(p->left);
Btree_post(p->right);
printf("%c",p->data);
}
//***************************************************************************************
#include <stdio.h>
#include <stdlib.h>
#include "1.h"
int main(int argc, const char *argv[])
{
Btree p=Btree_create();
if(p!=NULL)
{
printf("创建成功\n");
}
Btree_prio(p);
putchar(10);
Btree_in(p);
putchar(10);
Btree_post(p);
putchar(10);
return 0;
}