利用链表建立二叉树,完成前序遍历、中序遍历、后序遍历。

  建立二叉树用的是前序遍历建立二叉树:

   #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语言编程之二叉树的更多相关文章

  1. 20191310李烨龙Linux C语言编程基础

    Linux C语言编程基础 任务详情 0. 基于Ubuntu或OpenEuler完成下面的任务(OpenEuler有加分) 1. 选择教材第二章的一节进行编程基础练习(2.10,2.11,2.12,2 ...

  2. C语言编程实现Linux命令——who

    C语言编程实现Linux命令--who 实践分析过程 who命令是查询当前登录的每个用户,它的输出包括用户名.终端类型.登录日期及远程主机,在Linux系统中输入who命令输出如下: 我们先man一下 ...

  3. 个人c语言编程风格总结

    总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...

  4. Linux下C语言编程实现spwd函数

    Linux下C语言编程实现spwd函数 介绍 spwd函数 功能:显示当前目录路径 实现:通过编译执行该代码,可在终端中输出当前路径 代码实现 代码链接 代码托管链接:spwd.c 所需结构体.函数. ...

  5. 混合语言编程:启用CLR(公共语言运行时编译)让C#调用C++

    前言 关于混合C#和C++的编程方式,本人之前写过一篇博客(参见混合语言编程:C#使用原生的Directx和OpenGL),在之前的博客中,介绍了在C#的Winform和WPF下使用原生的Direct ...

  6. Linux基础与Linux下C语言编程基础

    Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...

  7. LINUX下C语言编程基础

    实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...

  8. 第二章 C语言编程实践

    上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...

  9. 华为C语言编程规范

    DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...

随机推荐

  1. 全新jquery多点滑动幻灯片——全屏动画animateSlide

    首页banner的酷炫效果多来自全屏大图的幻灯片动画,下面提供一种完美兼容的jquery动画特效:全新jquery多点滑动幻灯片——全屏动画animateSlide(代码完全原创). 直接上代码,把h ...

  2. C/S打包(图文)

    最近几天接触到了关于C/S打包这块. 由于自己当时遇到了很多疑点,所以特意总结一下: 1.创建Project: 2.当创建Ok后会出现如下页面,左侧3个文件夹,第一个是放置程序文件(只需要放入.exe ...

  3. Android之图片滑动与显示

    先在Transitions中插入ImageSwitcher package com.example.Galleryphotoshow; import com.example.Galleryphotos ...

  4. SQL Server 2000中的完整备份、差异备份操作

    在SQL Server 2000中,假定我们拥有一个数据库为:Test, 现在需要它每天19:00自动进行一次备份,并且以后一旦发生数据库错误,我们都可以通过备份文件将数据库恢复到任何一个备份过的时刻 ...

  5. Asp.net绑定带层次下拉框(select控件)

    1.效果图 2.数据库中表数据结构 3.前台页面 <select id="pid" runat="server" style="width:16 ...

  6. 20141211—C#面向对象,封装

    封装 一个private 的变量.在变量名上右键-重构-封装字段 小建议:在创建封装字段的时候,在名字前加 “_”用以区分. 封装时,下划线会自动去除 点击确定后: 应用: 赋值的时候走 set 取值 ...

  7. (转)国内外三个不同领域巨头分享的Redis实战经验及使用场景

    随着应用对高性能需求的增加,NoSQL逐渐在各大名企的系统架构中生根发芽.这里我们将为大家分享社交巨头新浪微博.传媒巨头Viacom及图片分享领域佼佼者Pinterest带来的Redis实践,首先我们 ...

  8. html5定位并在百度地图上显示

    在开发移动端 web 或者webapp时,使用百度地图 API 的过程中,经常需要通过手机定位获取当前位置并在地图上居中显示出来,这就需要用到html5的地理定位功能. navigator.geolo ...

  9. Spring Security (Acegi)的登陆配置

    简短记录一下: 在authenticationProcessingFilter这个bean中,如果没有配置<property name="alwaysUseDefaultTargetU ...

  10. mac实现jni的demo

    今天在看ArrayList 源码时看到了System.arraycopy 这个方法,但是这个方法没有java实现. 后面一通查询查找,才知道 如下图 native是一个java调用c语言来实现的操作的 ...