二叉树 顾名思义,它的每一个节点都有两个分支,A的两个分支是B,C。:--------:D的两个分支是 NULL,NULL。
二叉树的前序是->: 根,左边,右边。以上图为例,前序的结果为->:a,b,d,NULL,NULL,NULL,c,e,NULL,NULL,f,NULL,NULL,
中序是->:左边,根,右边。以上图为例,中序的结果为->:NULL,d,NULL,b,NULL,a,NULL,e,NULL,c,NULL,f,NULL,
后续是->左边,右边,根。以上图为例,后续的结果为->:NULL,NULL,d,NULL,b,NULL,NULL,e,NULL,NULL,f,c,a,
#include<stdio.h>
#define wanneng char//定义一个类型,这样以后更改类型时 只需修改这一个,万能类型。
#include<stdlib.h>
typedef struct erchashu //创建一个二叉树结构体
{
erchashu* zuo;
erchashu* you;
wanneng data;
}erchashu;
void qian(erchashu* p) //求前序的递归函数,只要更改递归函数内的顺序 就能变成求中序 以及求后续。
{
if (!p)
{
printf("NULL,");
return;
}
qian(p->zuo);
qian(p->you);
printf("%c,", p->data);
}
int main()
{
erchashu* A=(erchashu*)malloc(sizeof(erchashu));//创建一个 静态临时的 二叉树
A->data = 'a';
A->zuo = NULL;
A->you = NULL;
erchashu* B = (erchashu*)malloc(sizeof(erchashu));
B->data = 'b';
B->zuo = NULL;
B->you = NULL;
erchashu* C = (erchashu*)malloc(sizeof(erchashu));
C->data = 'c';
C->zuo = NULL;
C->you = NULL;
erchashu* D = (erchashu*)malloc(sizeof(erchashu));
D->data = 'd';
D->zuo = NULL;
D->you = NULL;
erchashu* E = (erchashu*)malloc(sizeof(erchashu));
E->data = 'e';
E->zuo = NULL;
E->you = NULL;
erchashu* F = (erchashu*)malloc(sizeof(erchashu));
F->data = 'f';
F->zuo = NULL;
F->you = NULL;
A->zuo = B;
A->you = C;
B->zuo = D;
C->zuo = E;
C->you = F;
qian(A);
return 0;
}