c语言编程之二叉树
利用链表建立二叉树,完成前序遍历、中序遍历、后序遍历。
建立二叉树用的是前序遍历建立二叉树:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<malloc.h> typedef int element;
typedef struct Tree{
struct Tree *lchild,*rchild;
char data;
}*pTree,pNode; //char str[]="ABD#E##FG###CI##H##";
char str[]="ABDH#K###E##CFI###G#J##";
element index=;
//Init a empty tree
element Init_tree(pTree *T)
{
*T=NULL;
printf("init a empty tree\n");
} //build a tree
void Creat_tree(pNode **T)
{
char num;
num=str[index++];
pTree P=NULL;
//P=*T;
if(num=='#')
*T=NULL;
else
{
// if(!(*T))
// exit(OVERFLOW);
(*T)=(pTree)malloc(sizeof(pNode));
//memset(*T,0,sizeof(pNode));
(*T)->data=num;
Creat_tree(&(*T)->lchild);
Creat_tree(&(*T)->rchild);
}
} //pro order traversal
element Pro_trav(pTree T)
{
if(T==NULL)
return ;
printf("pro order traversal data:%c\n",T->data);
Pro_trav(T->lchild);
Pro_trav(T->rchild);
} //midle order traversal
element Mid_trav(pTree T)
{
if(T==NULL)
return;
Mid_trav(T->lchild);
printf("mid order traversal data:%c\n",T->data);
Mid_trav(T->rchild);
} //after traversal
element Aft_trav(pTree T)
{
if(T==NULL)
return;
Aft_trav(T->lchild);
Aft_trav(T->rchild);
printf("after order traversal data:%c\n",T->data);
} element main()
{
pTree T;
T=(pTree)malloc(sizeof(struct Tree));
//Init_tree(&T);
printf("before is ok\n");
Creat_tree(&T);
Pro_trav(T);
Mid_trav(T);
Aft_trav(T);
return ;
}
输出结果:
before is ok
pro order traversal data:A
pro order traversal data:B
pro order traversal data:D
pro order traversal data:H
pro order traversal data:K
pro order traversal data:E
pro order traversal data:C
pro order traversal data:F
pro order traversal data:I
pro order traversal data:G
pro order traversal data:J
mid order traversal data:H
mid order traversal data:K
mid order traversal data:D
mid order traversal data:B
mid order traversal data:E
mid order traversal data:A
mid order traversal data:I
mid order traversal data:F
mid order traversal data:C
mid order traversal data:G
mid order traversal data:J
after order traversal data:K
after order traversal data:H
after order traversal data:D
after order traversal data:E
after order traversal data:B
after order traversal data:I
after order traversal data:F
after order traversal data:J
after order traversal data:G
after order traversal data:C
after order traversal data:A
c语言编程之二叉树的更多相关文章
- 20191310李烨龙Linux C语言编程基础
Linux C语言编程基础 任务详情 0. 基于Ubuntu或OpenEuler完成下面的任务(OpenEuler有加分) 1. 选择教材第二章的一节进行编程基础练习(2.10,2.11,2.12,2 ...
- C语言编程实现Linux命令——who
C语言编程实现Linux命令--who 实践分析过程 who命令是查询当前登录的每个用户,它的输出包括用户名.终端类型.登录日期及远程主机,在Linux系统中输入who命令输出如下: 我们先man一下 ...
- 个人c语言编程风格总结
总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...
- Linux下C语言编程实现spwd函数
Linux下C语言编程实现spwd函数 介绍 spwd函数 功能:显示当前目录路径 实现:通过编译执行该代码,可在终端中输出当前路径 代码实现 代码链接 代码托管链接:spwd.c 所需结构体.函数. ...
- 混合语言编程:启用CLR(公共语言运行时编译)让C#调用C++
前言 关于混合C#和C++的编程方式,本人之前写过一篇博客(参见混合语言编程:C#使用原生的Directx和OpenGL),在之前的博客中,介绍了在C#的Winform和WPF下使用原生的Direct ...
- Linux基础与Linux下C语言编程基础
Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...
- LINUX下C语言编程基础
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...
- 第二章 C语言编程实践
上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...
- 华为C语言编程规范
DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...
随机推荐
- 为IE单独写CSS的三种方法
本文由 Kayo Lee 发表,本文链接:http://kayosite.com/the-methods-make-css-only-for-ie.html 因为万恶的 IE 存在各种的不标准,因此, ...
- Google学术指数2015版
除了影响因子,还有许多指标可以评价论文价值,如Google的H5指数H5中位数.现在JCR 的2015影响因子早已放出.Google也于6月份提供了其最新的2015学术指数.2015版的学术指数,是基 ...
- dedecms5.7文章实现阅读全文功能二次开发
阅读全文功能其实在很多的流行站点都有的,比如网易,新浪等,随着文章内容的增加,当一个页面有多个分页的时候,就会显示出这个“在本页阅读全文”的链接,点击这个链接之后,出现的,将是这篇文章以没有分页出现的 ...
- 【Linux C中文函数手册】 字符串转换函数
字符串转换函数 1)atof 将字符串转换成浮点型数 相关函数 atoi,atol,strtod,strtol,strtoul表头文件 #include <stdlib.h>定义函数 do ...
- Cocos2d-JS中的文本菜单
文本菜单是菜单项只能显示文本,文本菜单类包括了cc.MenuItemLabel.cc.MenuItemFont和cc.MenuItemAtlasFont.cc.MenuItemLabel是个抽象类,具 ...
- 【学习笔记】【C语言】循环结构-for
1.使用: for (语句1; 条件; 语句2) { 循环体 } 语句1:初始化语句 语句2:增量语句(执行完循环体后再执行的语句) 1.for一开始就会执行一次语句1(整个for循环 ...
- 【学习笔记】【C语言】流程控制
顺序结构:默认的流程结构.按照书写顺序执行每一条语句. 选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码. 循环结构:在给定条件成立的情况下,反复执行某一段代码.
- socket.io问题,io.sockets.manager.rooms和io.sockets.clients('particular room')这两个函数怎么用?
为什么我用nodejs用这个两个函数获取都会出错呢?是不是socket的api改了?请问现在获取房间数和当前房间的客户怎么获取?什么函数?谢谢!!急求! 网友采纳 版本问题.io.socket ...
- VxWorks 6.9 内核编程指导之读书笔记 -- 多任务(二)
VxWorks的系统任务 VxWorks在引导时启动的系统任务依赖于配置,有些总是运行.任务集与VxWorks的基本配置相关,很少的任务常用于可选的组件. 注意:别挂起.删除或改变任何系统任务的优先级 ...
- UI2_NSUserDefaults
// // ViewController.m // UI2_NSUserDefaults // // Created by zhangxueming on 15/7/8. // Copyright ( ...