本题构造一个含3个结点的二叉树,输入的第一个结点为根结点,第二个结点为根结点的左儿子,第三个结点为根结点的右儿子,输出这个二叉树的先序、中序和后序序列。
函数接口定义:
Bptr creat();/*构造3个结点的二叉树。 输入3个整数值, 输入的第一个值为根结点, 第二个值为根结点的左儿子, 第三个值为根结点的右儿子*/ void preorder(Bptr p);//先序遍历 void inrder(Bptr p);//中序遍历 void postorder(Bptr p);//后序遍历
其中 p
是用户传入的参数。
裁判测试程序样例:
#include <stdio.h>
#include <malloc.h>
typedef struct node
{
int data;
struct node *Lson,*Rson;
}Bnode,*Bptr;
Bptr creat();
void preorder(Bptr p);//先序遍历
void inorder(Bptr p);//中序遍历
void postorder(Bptr p);//后序遍历
int main()
{
Bptr root=NULL;
root=creat();
preorder(root);
printf("\n");
inorder(root);
printf("\n");
postorder(root);
return 0;
}
/* 请在这里填写答案 */
输入样例:
1 2 3
输出样例:
1 2 3
2 1 3
2 3 1
有查重 请勿照搬 谢谢配合
此题不需要递归就可以解决 水分可用
Bptr creat()
{
Bptr p;
int xsl[3],i;
for (i = 0; i < 3; i++)
{
scanf("%d", &xsl[i]);
}
p = (Bptr)malloc(sizeof(Bnode));
p->Lson = (Bptr)malloc(sizeof(Bnode));
p->Rson = (Bptr)malloc(sizeof(Bnode));
p->data = xsl[0];
p->Lson->data = xsl[1];
p->Rson->data= xsl[2];
return p;
}
void preorder(Bptr p){
printf("%d ",p->data);
printf("%d ",p->Lson->data);
printf("%d ",p->Rson->data);
}
void inorder(Bptr p){
printf("%d ",p->Lson->data);
printf("%d ",p->data);
printf("%d ",p->Rson->data);
}
void postorder(Bptr p){
printf("%d ",p->Lson->data);
printf("%d ",p->Rson->data);
printf("%d ",p->data);
}