本题构造一个含3个结点的二叉树,输入的第一个结点为根结点,第二个结点为根结点的左儿子,第三个结点为根结点的右儿子,输出这个二叉树的先序、中序和后序序列。
函数接口定义:
Bptr creat();/*构造3个结点的二叉树。
输入3个整数值,
输入的第一个值为根结点,
第二个值为根结点的左儿子,
第三个值为根结点的右儿子*/
void preorder(Bptr p);//先序遍历
void inorder(Bptr p);//中序遍历
void postorder(Bptr 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(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
Bptr root = (Bnode *)malloc(sizeof(Bnode));
root->data = a;
Bnode *p = (Bnode *)malloc(sizeof(Bnode));
p->data = b;
root->Lson = p;
p = (Bnode *)malloc(sizeof(Bnode));
p->data = c;
root->Rson = p;
return root;
}
void preorder(Bptr p){//先序
if(p != NULL){
printf("%d ",p->data);
preorder(p->Lson); //递归遍历左子树
preorder(p->Rson); //递归遍历右子树
}
}
void inorder(Bptr p){//中序
if(p != NULL){
inorder(p->Lson); //递归遍历左子树
printf("%d ",p->data);
inorder(p->Rson); //递归遍历右子树
}
}
void postorder(Bptr p){//后序
if(p != NULL){
postorder(p->Lson); //递归遍历左子树
postorder(p->Rson); //递归遍历右子树
printf("%d ",p->data);
}
}
标签:结点,遍历,void,29,PTA,Bnode,Bptr,二叉树,root
From: https://blog.csdn.net/LgdCjp/article/details/139183828