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的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了所 ...
随机推荐
- HTML文本/文字竖直方向/纵向显示
HTML vertical text (Safari, Firefox, Chrome, and Opera) .vText { -moz-transform: rotate(-90deg) tran ...
- CF703D Mishka and Interesting sum
题意:给定一个1e6长度的值域1e9的数组.每次给定询问,询问区间内出现偶数次的数的异或和. 题解:首先很显然,每一次询问的答案,等于这个区间所有不同元素异或和异或上区间异或和.(因为出现偶数次的对区 ...
- SCOI2017酱油记
Day0: 虽然是8点30开始模拟赛,还是设了个7点的闹钟调节生物钟.结果硬生生睡到7点40... 打开题目:T1期望,直接弃掉(到现在都不会期望已经可以滚粗了..) T2一眼可做,恩,先写个暴力.然 ...
- python 2 到 3 的新手坑
print 和 input print 我们在课程最开始的时候就讲过 print,在版本2的使用方法是: print 'this is version 2' 也可以是 print('this is v ...
- XE8_TPaintBox画
1. procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas); var bitmap :TBitMap; pt1, pt2 ...
- Nginx虚拟主机配置模板
/////////////////////////////写在前头//////////////////////////////////////////Nginx 服务器中文文档:http://www. ...
- 程序员怎样迈出从5K到1W的重要一步
为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝:而自己加班加点搞到天亮还做不完. 为什么用户提出需求变更后,大牛只需潇洒地敲敲键盘,改改配置:而自己将代码改了又改,删了又建,几乎晕 ...
- Git中从远程的分支获取最新的版本到本地方式
Git中从远程的分支获取最新的版本到本地方式如下, 如何更新下载到代码到本地,请参阅ice的博客基于Github参与eoe的开源项目指南 方式一 . 查看远程仓库 $ git remote -v eo ...
- PHP Smarty template for website
/****************************************************************************** * PHP Smarty templat ...
- IDEA Tomcat服务器 更新.jsp时,页面刷新无法同步修改
这是因为在配置服务时没有配置好: on frame deactivation部分