C_数据结构_链式二叉树
# 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_数据结构_链式二叉树的更多相关文章
- UVa 122 Trees on the level(链式二叉树的建立和层次遍历)
题目链接: https://cn.vjudge.net/problem/UVA-122 /* 问题 给出每个节点的权值和路线,输出该二叉树的层次遍历序列. 解题思路 根据输入构建链式二叉树,再用广度优 ...
- 链式二叉树的实现(Java)
定义树节点: package 链式二叉树; public class TreeNode { private Object data; private TreeNode left; private Tr ...
- c_数据结构_队的实现
# 链式存储#include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100//存储空间初始分配量 #defin ...
- 【数据结构】链式向前星知识点&代码
代码: struct NODE{ int to; int nxt; int c; }node[MM];//链式向前星 ; void add(int a,int b,int c){ node[lcnt] ...
- C_数据结构_链表的链式实现
传统的链表不能实现数据和链表的分离,一旦数据改变则链表就不能用了,就要重新开发. 如上说示:外层是Teacher,里面小的是node. #ifndef _MYLINKLIST_H_ #define _ ...
- c_数据结构_二叉树的遍历实现
#include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define OVERFLOW -2 #d ...
- c_数据结构_图_邻接表
课程设计------邻接表 图的遍历实现课程设计:https://files.cnblogs.com/files/Vera-y/图的遍历_课程设计.zip #include<stdio.h> ...
- c_数据结构_栈的实现
#include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100 #define STACKINCREMENT ...
- c_数据结构_链表
#include<stdio.h> #include<stdlib.h> #define ERROR 0 #define OK 1 #define OVERFLOW -2 ty ...
随机推荐
- centos6.5下oracle11g开机自动启动方法一
转裁于 方法一 https://blog.csdn.net/wx5040257/article/details/77875690 方法二 https://blog.csdn.net/wx504025 ...
- (转)Spring boot(一):入门篇
https://www.cnblogs.com/ityouknow/p/5662753.html#!comments 构建微服务:Spring boot 入门篇 什么是Spring Boot Spri ...
- 基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码
比如 想跳到 mao.aspx 的页面 的div id="s" 的位置 那么 只用<a href="mao.aspx#s"> 就可实现跳转到指定位置 ...
- Linux基础第六课——grep|awk|sort|uniq
管道符 | 前面的输出作为后面的输入 grep 可以理解为正则表达式 grep [参数] 文件名 -c 打印符合要求的行数 -v 打印不符合要求的行 -n 在输出符合要求的行的同时连同行号一起输出 - ...
- [国家集训队] calc
嘟嘟嘟 这道题dp虽然不难,但是我还是没推出来,感觉最近脑子不太好用啊. 于是就跑去问神仙gjx(全国前三!)了.(外出集训真是好) 神仙不愧是神仙,一会儿就想出来了,而且方法还比网上的题解好懂. d ...
- Linux(CentOS)上配置 SFTP(附解决Write failed: Broken pipe Couldn't read packet: Connection reset by peer)
#创建sftp组: groupadd sftp #创建一个用户sftpuser: useradd -g sftp -s /bin/false sftpuser #提示: /etc/group 文件包含 ...
- Linux - CentOS7上的时间同步
1. 时区的概念 1.1 时区简介 地球是自西向东自转,东边比西边先看到太阳,东边的时间也比西边的早.东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算,这给人们带来不便.所以为了克服时间上 ...
- linux(centos 7)下安装elasticsearch 5 的 IK 分词器
(一)到IK 下载 对应的版本(直接下载release版本,避免mvn打包),下载后是一个zip压缩包 (二)将压缩包上传至elasticsearch 的安装目录下的plugins下,进行解压,运行如 ...
- npm和node的版本过低时的解决办法
npm版本过低时的解决办法npm全名Node Package Manager 1.配置源的三种方法:1).npmrc文件的作用,就是配置npm源:使用淘宝源的方法就是在文件.npmrc中加入下面的语句 ...
- MP实战系列(三)之实体类讲解
首先说一句,mybatis plus实在太好用了! mybaits plus的实体类: 以我博客的用户类作为讲解 package com.blog.entity; import com.baomido ...