二叉树的递归遍历
2015-11-04 15:15
387 查看
#include<stdio.h>
#include<stdlib.h>
struct TreeNode;
typedef struct TreeNode *Position;
typedef struct TreeNode *SearchTree;
SearchTree Insert(int x, SearchTree T);
struct TreeNode //结点声明
{
int data;
SearchTree left;
SearchTree right;
};
SearchTree Insert(int x, SearchTree T) //建立二叉树(插入结点的方法建立二叉树,小数在左,大数在右)
{
if(T==NULL){
T=malloc(sizeof(struct TreeNode));
T->data = x;
T->left = T->right =NULL;
}
else if(x < T->data)
T->left = Insert(x,T->left);
else if(x > T->data)
T->right = Insert(x,T->right);
return T;
}
void Zhongxu(SearchTree T) //中序遍历(因为特殊的创建方法,导致中序遍历输出为递增的数字)
{
if(T != NULL) {
Find(T->left);
printf("%5d",T->data);
Find(T->right);
}
}
void Xianxu(SearchTree T) //先序遍历
{
if(T != NULL){
printf("%5d",T->data);
Xianxu(T->left);
Xianxu(T->right);
}
}
void Houxu(SearchTree T) //后序遍历
{
if(T != NULL){
Houxu(T->left);
Houxu(T->right);
printf("%5d",T->data);
}
}
int main()
{
SearchTree T=NULL;
int x;
printf("请输入根结点: ");
scanf("%d", &x);
while(x != -1) {
T = Insert(x,T);
printf("请输入值: ");
scanf("%d", &x);
}
printf("先序: ");
Xianxu(T);
printf("\n");
printf("中序: ");
Zhongxu(T);
printf("\n");
printf("后序: ");
Houxu(T);
printf("\n");
}
#include<stdlib.h>
struct TreeNode;
typedef struct TreeNode *Position;
typedef struct TreeNode *SearchTree;
SearchTree Insert(int x, SearchTree T);
struct TreeNode //结点声明
{
int data;
SearchTree left;
SearchTree right;
};
SearchTree Insert(int x, SearchTree T) //建立二叉树(插入结点的方法建立二叉树,小数在左,大数在右)
{
if(T==NULL){
T=malloc(sizeof(struct TreeNode));
T->data = x;
T->left = T->right =NULL;
}
else if(x < T->data)
T->left = Insert(x,T->left);
else if(x > T->data)
T->right = Insert(x,T->right);
return T;
}
void Zhongxu(SearchTree T) //中序遍历(因为特殊的创建方法,导致中序遍历输出为递增的数字)
{
if(T != NULL) {
Find(T->left);
printf("%5d",T->data);
Find(T->right);
}
}
void Xianxu(SearchTree T) //先序遍历
{
if(T != NULL){
printf("%5d",T->data);
Xianxu(T->left);
Xianxu(T->right);
}
}
void Houxu(SearchTree T) //后序遍历
{
if(T != NULL){
Houxu(T->left);
Houxu(T->right);
printf("%5d",T->data);
}
}
int main()
{
SearchTree T=NULL;
int x;
printf("请输入根结点: ");
scanf("%d", &x);
while(x != -1) {
T = Insert(x,T);
printf("请输入值: ");
scanf("%d", &x);
}
printf("先序: ");
Xianxu(T);
printf("\n");
printf("中序: ");
Zhongxu(T);
printf("\n");
printf("后序: ");
Houxu(T);
printf("\n");
}
相关文章推荐
- jQuery:35个技巧
- 使用ContactsContract API
- JPA 学习篇(三)简单实体映射和EntityManagerAPI
- Efs Frame企业级开发框架源码
- php开发工具zendstudio13破解补丁
- 巧用JSON.stringify()生成漂亮格式的JSON字符串
- 通俗易懂理解 隐马尔可夫(HMM)
- SQL Server 2008R2 数据库邮件
- [Leetcode]H-Index II
- 使用ST TOOLS的STVP烧写程序快速入门
- Editor——(AddChild、AddParent)
- 微信公众号开发sprintf()函数其中%S等符号的说明
- Android源码编译
- Oracle Linux配置Yum的repo
- 矢量叉积判断顺时针还是逆时针
- NOI题库192 生日蛋糕
- 如何使用JVisualVM进行性能分析
- 你应该成为 Web 开发者的 5 大理由—兄弟连IT教育
- CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证
- CentOS6.5最小化安装包选择