c语言-构建一个静态二叉树
第一、树的构建
定义树结构
struct BTNode {
	char data;
	struct BTNode* pLChild;
	struct BTNode* pRChild;
};
静态方式创建一个简单的二叉树
struct BTNode* create_list() {
	struct  BTNode* pA = (struct BTNode*)malloc(sizeof(BTNode));
	struct  BTNode* pB = (struct BTNode*)malloc(sizeof(BTNode));
	struct  BTNode* pC = (struct BTNode*)malloc(sizeof(BTNode));
	struct  BTNode* pD = (struct BTNode*)malloc(sizeof(BTNode));
	struct  BTNode* pE = (struct BTNode*)malloc(sizeof(BTNode));
	pA->data = 'A';
	pB->data = 'B';
	pC->data = 'C';
	pD->data = 'D';
	pE->data = 'E';	
	pA->pLChild = pB;
	pA->pRChild = pC;
	pB->pLChild = pB->pRChild = NULL;
	pC->pLChild = pD;
	pC->pRChild = NULL;
	pD->pLChild = NULL;
	pD->pRChild = pE;
	pE->pLChild = pE->pRChild = NULL;
	return pA;
}
第二、树的三种遍历
1. 先序遍历
//先序输出
void PreTravense(struct BTNode* pHead) {
if (NULL!= pHead)
{
printf("%c", pHead->data);
if (NULL!= pHead->pLChild)
{
PreTravense(pHead->pLChild);
}
if (NULL != pHead->pRChild)
{
PreTravense(pHead->pRChild);
}
}
}
2. 中序遍历
//中序输出
void InTravense(struct BTNode* pHead) {
if (NULL != pHead)
{
if (NULL != pHead->pLChild)
{
PreTravense(pHead->pLChild);
}
printf("%c", pHead->data); if (NULL != pHead->pRChild)
{
PreTravense(pHead->pRChild);
}
}
}
3.后续遍历
//后序输出
void PostTravense(struct BTNode* pHead) {
if (NULL != pHead)
{
if (NULL != pHead->pLChild)
{
PreTravense(pHead->pLChild);
} if (NULL != pHead->pRChild)
{
PreTravense(pHead->pRChild);
}
printf("%c", pHead->data);
}
}
第三、最终运行测试
int main() {
	printf("创建序列\n");
	struct BTNode* pHead = create_list();
	printf("先序输出\n");
	PreTravense(pHead);
	printf("中序输出\n");
	InTravense(pHead);
	printf("后序输出\n");
	PostTravense(pHead);
	return 0;
}
  
c语言-构建一个静态二叉树的更多相关文章
- 如何用 Swift 语言构建一个自定控件
		(via:破船之家,原文:How To Make a Custom Control in Swift) 用户界面控件是所有应用程序重要的组成部分之一.它们以图形组件的方式呈现给用户,用户可以通过它 ... 
- 用C语言构建一个可执行程序的流程
		1.流程图 从用C语言写源代码,然后经过编译器.连接器到最终可执行程序的流程图大致如下图所示. 2.编译流程 首先,我们先用C语言把源代码写好,然后交给C语言编译器.C语言编译器内部分为前端和后端. ... 
- 用java语言构建一个网络服务器,实现客户端和服务器之间通信,实现客户端拥有独立线程,互不干扰
		服务器: 1.与客户端的交流手段多是I/O流的方式 2.对接的方式是Socket套接字,套接字通过IP地址和端口号来建立连接 3.(曾经十分影响理解的点)服务器发出的输出流的所有信息都会成为客户端的输 ... 
- Python 之父再发文:构建一个 PEG 解析器
		花下猫语: Python 之父在 Medium 上开了博客,现在写了两篇文章,本文是第二篇的译文.前一篇的译文 在此 ,宣布了将要用 PEG 解析器来替换当前的 pgen 解析器. 本文主要介绍了构建 ... 
- Django入门第一步:构建一个简单的Django项目
		Django入门第一步:构建一个简单的Django项目 1.简介 Django是一个功能完备的Python Web框架,可用于构建复杂的Web应用程序.在本文中,将通过示例跳入并学习Django.您将 ... 
- 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)
		通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ... 
- .Net中的AOP系列之构建一个汽车租赁应用
		返回<.Net中的AOP>系列学习总目录 本篇目录 开始一个新项目 没有AOP的生活 变更的代价 使用AOP重构 本系列的源码本人已托管于Coding上:点击查看. 本系列的实验环境:VS ... 
- 利用git+hugo+markdown  搭建一个静态网站
		利用git+hugo+markdown 搭建一个静态网站 一直想要有一个自己的文档管理系统: 可以很方便书写,而且相应的文档很容易被分享 很方便的存储.管理.历史记录 比较方面的浏览和查询 第一点用M ... 
- (转)如何学好C语言,一个成功人士的心得!
		zidier111发表于 2013-1-26 08:59:05 今 天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了所 ... 
随机推荐
- 算法总结之 最大值减去最小值或等于num的子数组数量
			给定数组arr和整数num,共返回有多少个子数组满足 <= num 数组长度N 时间复杂度O(N) package TT; import java.util.LinkedList; pu ... 
- redis集群使用Java工具类(Java jedis集群工具类)
			package com.xiaomi.weather.vote.webservices.util.redisCache; import com.google.common.base.Strings; ... 
- RowSet
			import java.io.FileInputStream; import java.util.Properties; import javax.sql.rowset.JdbcRowSet; imp ... 
- BZOJ3672/UOJ7 [Noi2014]购票
			本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ... 
- Neutron新进展|DragonFlow在Mitaka版本中的Roadmap
			OpenStack网络在Mitaka版本中将有哪些新变化?1月11日到12日,DragonFlow的PTL——Eran Gampel,Kuryr的PTL——Gal Sagie,和他们的老大从以色列来到 ... 
- PHP中preg_match正则匹配的/u /i /s是什么意思
			/u 表示按unicode(utf-8)匹配(主要针对多字节比如汉字) /i 表示不区分大小写(如果表达式里面有 a, 那么 A 也是匹配对象) /s 表示将字符串视为单行来匹配 
- 安装Nodejs、npm、Less(支持生成压缩后的css)
			安装Nodejs和npm 1.到https://nodejs.org/en/下载最新的版本,安装到d盘下,假设安装后的路径为D:\Program Files\nodejs, 笔者当前的版本v6.10. ... 
- 【SQL查询】查询的列起别名_AS
			方法一: 以as关键字指定字段别名,as在select的字段和别名之间. 方法二: 直接在字段名称后面加上别名,中间以空格隔开. 
- poj3268 Silver Cow Party (SPFA求最短路)
			其实还是从一个x点出发到所有点的最短路问题.来和回只需分别处理一下逆图和原图,两次SPFA就行了. #include<iostream> #include<cstdio> #i ... 
- docker+jenkins 部署持续集成环境
			1.使用docker container的方式安装jenkins [root@hadoop default]# docker pull jenkin 创建一个目录用于后边映射 [root@hadoop ... 
