# 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. mybatis 初始

    接下来带着大家建立一个mybatis的初级项目 首先我们利用idea利用maven建立一个空项目 然后输入名称什么的就会创建一个空的maven项目了 然后我们需要在项目总得pom.xml中进行配置信息 ...

  2. Linux 小知识翻译 - 「Linux和CPU的兼容性」

    Linux刚开始是作为可运行在 Intel 的 「i386」CPU上,与POSIX兼容的内核来开发的. 而现在主流的Linux是指能在所谓「PC」上运行的内核.「PC」是指采用「IA(intel架构) ...

  3. Properties集合_练习

    定义功能:获取一个应用程序 运行次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序 思路:  1.定义计数器:每次程序启动都需要计数一次,并且是在原有的次数上进行计数.  2.计数器就 ...

  4. 2018-2019-2 网络对抗技术 20165318 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165318 Exp4 恶意代码分析 原理与实践说明 实践目标 实践内容概述 基础问题回答 实践过程记录 1.使用schtasks指令监控系统 2.使用sys ...

  5. [题目] Luogu P3707 [SDOI2017]相关分析

    参考资料:[Luogu 3707] SDOI2017 相关分析 P3707 [SDOI2017]相关分析 TFRAC FRAC DFRAC \(\tfrac{\sum}{1}\) \(\frac{\s ...

  6. 洛谷P4551 最长异或路径

    传送门:https://www.luogu.org/problem/show?pid=4551 在看这道题之前,我们应懂这道题怎么做:给定n个数和一个数m,求m和哪一个数的异或值最大. 一种很不错的做 ...

  7. Arduino IDE for ESP8266 项目云盒子 (1)AP直接模式

    手机直接连接esp8266辐射的WIFI,通信. https://item.taobao.com/item.htm?spm=a230r.1.14.20.eYblO3&id=5219451024 ...

  8. 1029 最大公约数和最小公倍数问题(gcd) luogu洛谷

    题目描述 输入22个正整数x_0,y_0(2 \le x_0<100000,2 \le y_0<=1000000)x0​,y0​(2≤x0​<100000,2≤y0​<=100 ...

  9. ssh test

    本文以以下需求为背景,介绍详细的做法: 需在同一台服务器同时部署两个不同的 Github 仓库(对 Bitbucket 等 git 服务同样适用) root 用户可在远程登录 SSH 后附上预期的 S ...

  10. Luogu P3366 【模板】最小生成树

    qwq #include<cstdio> #include<algorithm> using namespace std; ]; int n,m; struct abc { i ...