/*1、二叉树的创建和遍历演示
1)从键盘输入二叉树的各结点值,按先序递归方式创建二叉树
2)分别实现先序、中序、后序递归遍历二叉树
3)输出二叉树的按层次遍历序列
4)输出二叉树的中序非递归遍历下的结点访问次序
*/
#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode;
//按先序递归遍历创建二叉树
BiTNode *CreateBitree()
{
char ch;
BiTNode *root;
ch=getchar();
if(ch==' ') root=NULL;
else
{
root=(BiTNode *)malloc(sizeof(BiTNode));
root->data =ch;
root->lchild =CreateBitree();
root->rchild =CreateBitree();
}
return root;
}
//先序递归遍历
void PreOrderTraverse(BiTNode *T)
{
if(T!=NULL)
{
printf("%c",T->data );
PreOrderTraverse(T->lchild );
PreOrderTraverse(T->rchild );
}
}
//中序递归遍历
void InOrderTraverse(BiTNode *T)
{
if(T!=NULL)
{
PreOrderTraverse(T->lchild );
printf("%c",T->data );
PreOrderTraverse(T->rchild );
}
}
//后序递归遍历
void PostOrderTraverse(BiTNode *T)
{
if(T!=NULL)
{
PreOrderTraverse(T->lchild );
PreOrderTraverse(T->rchild );
printf("%c",T->data );
}
}
void main()
{
BiTNode *T;
printf("按先序递归遍历创建二叉树:\n");
T=CreateBitree();
printf("\n");
printf("按先序递归遍历二叉树:\n");
PreOrderTraverse(T);
printf("\n");
printf("按中序递归遍历二叉树:\n");
InOrderTraverse(T);
printf("\n");
printf("按后序递归遍历二叉树:\n");
PostOrderTraverse(T);
printf("\n");
}
chen_xiang376
- 粉丝: 0
- 资源: 5
最新资源
- (18956428)STM32F103C8T6 小系统原理图 PCB
- (175828796)python全国疫情数据爬虫可视化分析系统(django)源码数据库演示.zip
- 记账本项目市场需求文档(MRD)
- (31687028)PID控制器matlab仿真.zip
- 基于SpringBoot的“在线答疑系统”的设计与实现(源码+数据库+文档+PPT).zip
- (11828838)进销存系统源码
- 记账本项目三大模块原型图
- fed54987-3a28-4a7a-9c89-52d3ac6bc048.vsidx
- (177367038)QT实现教务管理系统.zip
- (178041422)基于springboot网上书城系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈