# include <stdio.h>
# include <malloc.h> struct BTNode
{
int data;
struct BTNode * pLchild; // p 是指针 L 是左 child 是孩子
struct BTNode * pRchild; // 表示右孩子
}; struct BTNode * CreateBTree(void); //静态创建二叉树
void PreTraverseBTree(struct BTNode * pT); //先序遍历
void InTraverseBTree(struct BTNode * pT); //中序遍历
void PostTraverseBTree(struct BTNode * pT); //后续遍历 int main(void)
{
BTNode pT = CreateBTree(); //这里不能加 void PreTraverseBTree(pT); //先序遍历
InTraverseBTree(pT); //中序遍历
PostTraverseBTree(pT); //后续遍历 return ;
} void PostTraverseBTree(struct BTNode * pT) //后续遍历
{
if (pT != NULL)
{
if (NULL != pT->pLchild)
{
PostTraverseBTree(pT->pLchild); // pT->pLchild可以代表整个左子树
}
if (NULL != pT->pRchild)
{
PostTraverseBTree(pT->pRchild);
} printf("%c\n", pT->data);
}
} void InTraverseBTree(struct BTNode * pT) //中序遍历
{
if (pT != NULL)
{
if (NULL != pT->pLchild)
{
InTraverseBTree(pT->pLchild); // pT->pLchild可以代表整个左子树
} printf("%c\n", pT->data); if (NULL != pT->pRchild)
{
InTraverseBTree(pT->pRchild);
}
}
} void PreTraverseBTree(struct BTNode * pT) //先序遍历
{
if (pT != NULL)
{
printf("%c\n", pT->data); if (NULL != pT->pLchild)
{
PreTraverseBTree(pT->pLchild); // pT->pLchild可以代表整个左子树
} if (NULL != pT->pRchild)
{
PreTraverseBTree(pT->pRchild);
}
} // if 判断不能省略 /* //伪算法 先访问跟节点
再先序访问左子树
在先序访问右子树
*/
} struct BTNode * CreateBTree(void)
{
struct BTNode pA = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode pB = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode pC = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode pD = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode pE = (struct BTNode *)malloc(sizeof(struct 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;
}

C_数据结构_链式二叉树的更多相关文章

  1. UVa 122 Trees on the level(链式二叉树的建立和层次遍历)

    题目链接: https://cn.vjudge.net/problem/UVA-122 /* 问题 给出每个节点的权值和路线,输出该二叉树的层次遍历序列. 解题思路 根据输入构建链式二叉树,再用广度优 ...

  2. 链式二叉树的实现(Java)

    定义树节点: package 链式二叉树; public class TreeNode { private Object data; private TreeNode left; private Tr ...

  3. c_数据结构_队的实现

    # 链式存储#include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100//存储空间初始分配量 #defin ...

  4. 【数据结构】链式向前星知识点&代码

    代码: struct NODE{ int to; int nxt; int c; }node[MM];//链式向前星 ; void add(int a,int b,int c){ node[lcnt] ...

  5. C_数据结构_链表的链式实现

    传统的链表不能实现数据和链表的分离,一旦数据改变则链表就不能用了,就要重新开发. 如上说示:外层是Teacher,里面小的是node. #ifndef _MYLINKLIST_H_ #define _ ...

  6. c_数据结构_二叉树的遍历实现

    #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define OVERFLOW -2 #d ...

  7. c_数据结构_图_邻接表

    课程设计------邻接表 图的遍历实现课程设计:https://files.cnblogs.com/files/Vera-y/图的遍历_课程设计.zip #include<stdio.h> ...

  8. c_数据结构_栈的实现

    #include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100 #define STACKINCREMENT ...

  9. c_数据结构_链表

    #include<stdio.h> #include<stdlib.h> #define ERROR 0 #define OK 1 #define OVERFLOW -2 ty ...

随机推荐

  1. Jenkins的配置从节点中默认没有Launch agent via Java Web Start,该如何配置使用

    Jenkins的配置从节点中默认没有Launch agent via Java Web Start,如下图所示,而这种启动方式在Windows上是最方便的. 如何设置才能让出来呢? 1:打开" ...

  2. Paxos 算法 :消息传递一致性

    网络上有很多关于优秀的关于Paxos 算法的文章,我下面进行整理搜集一下: 分布式理论之一:Paxos算法的通俗理解 维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 L ...

  3. firefox event.preventDefault(); 没有效果的解决方案

    $('.sub-list-click a').click(function (event) { event.preventDefault(); var sub = $(this).parent(&qu ...

  4. Java对XML文件解析方式之一_SAX

    SAX(org.xml.sax) Simple API for XML,以事件的形式通知程序,对Xml进行解析.   SAX技术的介绍:SAX是一种以事件驱动的XML api,由它定义的事件流可以指定 ...

  5. Linux基础第六课——grep|awk|sort|uniq

    管道符 | 前面的输出作为后面的输入 grep 可以理解为正则表达式 grep [参数] 文件名 -c 打印符合要求的行数 -v 打印不符合要求的行 -n 在输出符合要求的行的同时连同行号一起输出 - ...

  6. cpu的组成及分工

    控制单元是上帝:掌控一切: 运算单元只负责算术和逻辑运算,运算的指令由控制单元提供,数据由寄存器提供: 存储单元:一方面给运算单元提供输入输出,另一方面在控制单元的控制下和内存通信: 控制单元使用运算 ...

  7. P2430 严酷的训练 题解

    题目背景 Lj的朋友WKY是一名神奇的少年,在同龄人之中有着极高的地位... 题目描述 他的老师老王对他的程序水平赞叹不已,于是下决心培养这名小子. 老王的训练方式很奇怪,他会一口气让WKY做很多道题 ...

  8. Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解

    Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解   Mysql慢查询开启 Mysql的查询讯日志是Mysql提供的一种日志记录,它用来记录在Mysql中响应 ...

  9. Git-本地项目和远程项目关联

    此处记录将本地项目与码云仓库关联步骤 1. 本地 Git 配置 配置一下一些基本的信息 $ git config--global user.name "Your Name" $ g ...

  10. ES5与ES6对比

    ES5与ES6对比 1. 模块引用 1.在ES5里,引入React包基本通过require进行,代码类似这样: // ES5 var React = require('react'); var { C ...