二叉树的建立与遍历

问题描述:建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。

基本要求:从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),并采用递归算法对其进行遍历(先序、中序、后序),将遍历结果打印输出。

测试数据:ABCффDEфGффFффф(其中ф表示空格字符)

则输出结果为先序:ABCDEGF

中序:CBEGDFA

后序:CGEFDBA

程序如下:

#include<stdio.h>

#include<stdlib.h>

typedef struct tnode

{

 char data;

 struct tnode *lchild;

 struct tnode *rchild;

 

}tnode;

tnode *Tree_creat(tnode *t)

{

 char ch;

 ch=getchar();

 if(ch==' ')

 t=NULL;

 else

 {

  if(!(t=(tnode *)malloc(sizeof(tnode))))

   printf("Error!");

  t->data=ch;//printf("[%c]",t->data);

  t->lchild=Tree_creat(t->lchild);

  t->rchild=Tree_creat(t->rchild);

  }

 return t;

}

 

void preorder(tnode *t)

{

 if(t!=NULL)

 {

  printf("%c ",t->data);

  preorder(t->lchild);

  preorder(t->rchild);

 }

}

 

void Inorder(tnode *t)

{

 if(t!=NULL)

 {

  Inorder(t->lchild);

  printf("%c ",t->data);

  Inorder(t->rchild);

 }

}

 

void postorder(tnode *t)

{

 if(t!=NULL)

 {

  postorder(t->lchild);

  postorder(t->rchild);

  printf("%c ",t->data);

 }

}

 

void main()

{

 tnode *t=NULL;

 t=Tree_creat(t);

 preorder(t);

 printf("\n");

 Inorder(t);

 printf("\n");

 postorder(t);

 printf("\n");

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值