第一、树的构建

定义树结构

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语言-构建一个静态二叉树的更多相关文章

  1. 如何用 Swift 语言构建一个自定控件

    (via:破船之家,原文:How To Make a Custom Control in Swift)   用户界面控件是所有应用程序重要的组成部分之一.它们以图形组件的方式呈现给用户,用户可以通过它 ...

  2. 用C语言构建一个可执行程序的流程

    1.流程图 从用C语言写源代码,然后经过编译器.连接器到最终可执行程序的流程图大致如下图所示. 2.编译流程 首先,我们先用C语言把源代码写好,然后交给C语言编译器.C语言编译器内部分为前端和后端. ...

  3. 用java语言构建一个网络服务器,实现客户端和服务器之间通信,实现客户端拥有独立线程,互不干扰

    服务器: 1.与客户端的交流手段多是I/O流的方式 2.对接的方式是Socket套接字,套接字通过IP地址和端口号来建立连接 3.(曾经十分影响理解的点)服务器发出的输出流的所有信息都会成为客户端的输 ...

  4. Python 之父再发文:构建一个 PEG 解析器

    花下猫语: Python 之父在 Medium 上开了博客,现在写了两篇文章,本文是第二篇的译文.前一篇的译文 在此 ,宣布了将要用 PEG 解析器来替换当前的 pgen 解析器. 本文主要介绍了构建 ...

  5. Django入门第一步:构建一个简单的Django项目

    Django入门第一步:构建一个简单的Django项目 1.简介 Django是一个功能完备的Python Web框架,可用于构建复杂的Web应用程序.在本文中,将通过示例跳入并学习Django.您将 ...

  6. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  7. .Net中的AOP系列之构建一个汽车租赁应用

    返回<.Net中的AOP>系列学习总目录 本篇目录 开始一个新项目 没有AOP的生活 变更的代价 使用AOP重构 本系列的源码本人已托管于Coding上:点击查看. 本系列的实验环境:VS ...

  8. 利用git+hugo+markdown 搭建一个静态网站

    利用git+hugo+markdown 搭建一个静态网站 一直想要有一个自己的文档管理系统: 可以很方便书写,而且相应的文档很容易被分享 很方便的存储.管理.历史记录 比较方面的浏览和查询 第一点用M ...

  9. (转)如何学好C语言,一个成功人士的心得!

    zidier111发表于 2013-1-26 08:59:05   今 天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了所 ...

随机推荐

  1. 查找文件【TLCL】

    locate locate 执行快速的路径名数据库搜索,输出每个与指定子字符串相匹配的路径名. locate bin/zip locate 命令的数据库是updatedb命令创建的. find loc ...

  2. vs 2010 mvc 3.0安装软件

    下载链接如下:MVC 3安装包:http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=d2928bc1-f48c-4e95-a0 ...

  3. Crashlytics功能集成

    总共分三步: 1. 将Crashlytics.framework和Fabric.framework拷贝到工程中: 2.配置工程的info.plist文件,如下: APIKey和Build secret ...

  4. SQL Server中的执行引擎入门

      简介 当查询优化器(Query Optimizer)将T-SQL语句解析后并从执行计划中选择最低消耗的执行计划后,具体的执行就会交由执行引擎(Execution Engine)来进行执行.本文旨在 ...

  5. hzau 1207 Candies

    1207: Candies Time Limit: 2 Sec  Memory Limit: 1280 MBSubmit: 223  Solved: 31[Submit][Status][Web Bo ...

  6. linux 部署python

    tar xf Python-.tar.xz cd Python-./configure make make install ln -s /usr/local/bin/python2. /usr/bin ...

  7. ionic3 教程(一)安装和配置

    // 安装(失败的话 Mac 尝试使用 sudo,Windows 尝试管理员身份运行 cmd) $ npm install -g cordova ionic // 安装后可以验证一下 ionic cl ...

  8. deep learning 学习笔记(三) 线性回归学习速率优化寻找

    继续学习http://www.cnblogs.com/tornadomeet/archive/2013/03/15/2962116.html,上一节课学习速率是固定的,而这里我们的目的是找到一个比较好 ...

  9. jstat 简介(1)

    1. jstat -gc pid 可以显示gc的信息,查看gc的次数,及时间. 其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总 ...

  10. JDBC进行处理大文件和批处理

    package cn.itcast.demo4; import java.io.FileInputStream; import java.io.FileOutputStream; import jav ...