#include<stdio.h>
#include<stdlib.h>
typedef struct node{ //定义节点
int data;
struct node *lchild;
struct node *rchild;
}Btnode;
Btnode *create_Btnode() //先序构造二叉树
{
Btnode *T;
int x;
scanf("%d",&x);
if(x==0)
return NULL;
else
{
T=(Btnode *)malloc(sizeof(Btnode)); //申请新节点
T->data=x;
T->lchild=create_Btnode();
T->rchild=create_Btnode();
}
return T;
}
void preOrder(Btnode *T) //先序遍历递归算法
{
if(T!=NULL)
{
printf("%d ",T->data);
preOrder(T->lchild);
preOrder(T->rchild);
}
}
void inOrder(Btnode *T) //中序遍历递归算法
{
if(T!=NULL)
{
inOrder(T->lchild);
printf("%d ",T->data);
inOrder(T->rchild);
}
}
void postOrder(Btnode *T) //后序遍历递归算法
{
if(T!=NULL)
{
postOrder(T->lchild);
postOrder(T->rchild);
printf("%d ",T->data);
}
}
int main()
{
Btnode *create_Btnode(); //创建链式二叉树
void preOrder(Btnode *T); //先序遍历递归算法
void inOrder(Btnode *T); //中序遍历递归算法
void postOrder(Btnode *T); //后序遍历递归算法
Btnode *T;
printf("请按先序的方式输入二叉树的节点元素:");
T=create_Btnode();
printf("前序输出:");
preOrder(T);
printf("\n");
printf("中序输出:");
inOrder(T);
printf("\n");
printf("后序输出:");
postOrder(T);
printf("\n");
return 0;
}
#include<stdlib.h>
typedef struct node{ //定义节点
int data;
struct node *lchild;
struct node *rchild;
}Btnode;
Btnode *create_Btnode() //先序构造二叉树
{
Btnode *T;
int x;
scanf("%d",&x);
if(x==0)
return NULL;
else
{
T=(Btnode *)malloc(sizeof(Btnode)); //申请新节点
T->data=x;
T->lchild=create_Btnode();
T->rchild=create_Btnode();
}
return T;
}
void preOrder(Btnode *T) //先序遍历递归算法
{
if(T!=NULL)
{
printf("%d ",T->data);
preOrder(T->lchild);
preOrder(T->rchild);
}
}
void inOrder(Btnode *T) //中序遍历递归算法
{
if(T!=NULL)
{
inOrder(T->lchild);
printf("%d ",T->data);
inOrder(T->rchild);
}
}
void postOrder(Btnode *T) //后序遍历递归算法
{
if(T!=NULL)
{
postOrder(T->lchild);
postOrder(T->rchild);
printf("%d ",T->data);
}
}
int main()
{
Btnode *create_Btnode(); //创建链式二叉树
void preOrder(Btnode *T); //先序遍历递归算法
void inOrder(Btnode *T); //中序遍历递归算法
void postOrder(Btnode *T); //后序遍历递归算法
Btnode *T;
printf("请按先序的方式输入二叉树的节点元素:");
T=create_Btnode();
printf("前序输出:");
preOrder(T);
printf("\n");
printf("中序输出:");
inOrder(T);
printf("\n");
printf("后序输出:");
postOrder(T);
printf("\n");
return 0;
}