#include <stdio.h>
#include <stdlib.h>

struct BTNode
{
char data ;
struct BTNode * pLchild ;
struct BTNode * pRchild ;
} ;
struct BTNode * creatBTree(void);
void PreTraverseBTree(struct BTNode * pT) ;
int main()
{
struct BTNode * pT= creatBTree();
//PreTraverseBTree(pT);
// InTraverseBTree(pT);
PostTraverseBTree(pT);

return 0 ;
}

struct BTNode * creatBTree(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 ;
}
//先序遍历
void PreTraverseBTree(struct BTNode * pT)
{
if(pT!=NULL)
{
printf("%c\n",pT->data);

if(pT->pLchild!=NULL)
{
PreTraverseBTree(pT->pLchild);
}
if(pT->pRchild!=NULL)
{
PreTraverseBTree(pT->pRchild);
}
}
/*
先访问跟节点
再先序访问左子树
再先序访问右子树*/
}
//中序遍历
void InTraverseBTree(struct BTNode * pT)
{
if(pT!=NULL)
{
if(pT->pLchild!=NULL)
{
InTraverseBTree(pT->pLchild);
}

printf("%c\n",pT->data);

if(pT->pRchild!=NULL)
{
InTraverseBTree(pT->pRchild);
}
}
/*

先中序访问左子树
再访问跟节点
再中序访问右子树*/
}
//后序遍历
void PostTraverseBTree(struct BTNode * pT)
{
if(pT!=NULL)
{
if(pT->pLchild!=NULL)
{
PostTraverseBTree(pT->pLchild);
}
if(pT->pRchild!=NULL)
{
PostTraverseBTree(pT->pRchild);
}
printf("%c\n",pT->data);
}
/*
先后序访问左子树
再后序访问右子树
再访问跟节点*/
}

C语言实现链式二叉树静态创建,(先序遍历),(中序遍历),(后续遍历)的更多相关文章

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

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

  2. C语言实现链式队列

    链式队列,简称"链队列",即使用链表实现的队列存储结构. 链式队列的实现思想同顺序队列类似,只需创建两个指针(命名为 top 和 rear)分别指向链表中队列的队头元素和队尾元素, ...

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

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

  4. Javascript、C#、php、asp、python 等语言的链式操作的实现

    一.什么是链式操作 把需要的下一步操作的对象通过上一步操作返回回来.使完成某些功能具有持续性. 二.链式操作优点 代码更精简优雅.链式操作能大大精简代码量,多项操作一行代码一气呵成,搞定: 链式操作应 ...

  5. c++实现二叉树的非递归创建以及非递归先序、中序、后序遍历

    二叉树的创建 思路:数组中从上到下依次放着二叉树中的元素,使用递归很容易实现,那么这里使用容器来存放之前的状态实现循环创建二叉树. TreeNode* createTree(int *arr, int ...

  6. 剑指offer——已知二叉树的先序和中序排列,重构二叉树

    这是剑指offer中关于二叉树重构的一道题.题目原型为: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2, ...

  7. 【算法】二叉树、N叉树先序、中序、后序、BFS、DFS遍历的递归和迭代实现记录(Java版)

    本文总结了刷LeetCode过程中,有关树的遍历的相关代码实现,包括了二叉树.N叉树先序.中序.后序.BFS.DFS遍历的递归和迭代实现.这也是解决树的遍历问题的固定套路. 一.二叉树的先序.中序.后 ...

  8. [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal 由先序和中序遍历建立二叉树

    Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may assume that ...

  9. JAVA下实现二叉树的先序、中序、后序、层序遍历(递归和循环)

    import java.util.HashMap; import java.util.LinkedList; import java.util.Map; import java.util.Queue; ...

随机推荐

  1. 来看看你对Python变量理解到位了没有

    变量是编程的基础概念,Python 的变量也看似很简单,但是如果理解不当,生搬硬套,可能会遇到一些麻烦. 下面用 10 个代码示例展示 Python 的 变量 本质. 以下内容有对应的 视频 手把手详 ...

  2. GDB gdb 调试

    除了用grmon看汇编调试外,还可以用gdb. 编译的时候加-g gdb app即可进入gdb调试 设置断点:b main.c:10 然后运行程序:run 断点处可以查看变量:display a 其它 ...

  3. VMware克隆Linux虚拟机报错

    在VMware里克隆了2个centos6.5,执行命令重启网卡服务报以下错误: Bringing up interface eth0: Device eth0 does not seem to be ...

  4. MyBatis 与Ibatis 区别

    Ibatis 是 Mybatis 的前身,两者都是优秀的持久层框架. 区别: 1.mybatis 实现接口绑定,不需要具体接口实现类.但是需要在xml文件中 的 namespace 绑定具体的接口. ...

  5. indexedDB 使用

    数据库的打开/新增/删除 initDB() { let _this = this; let obj = { id: 1, name: _this.addForm.content } let index ...

  6. c#音乐播放器

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. StarUML之八、StarUML的Entity-Relationship Diagram(实体关系图)示例

    数据库表关系设计也是常有场景,本章介绍如何设计一个实体关系图 1:新建项目,在Model Explore中Add Diagram | ER Diagram到指定的元素中: 2:从Toolbox中创建E ...

  8. 一行代码解决MacBook Pro安装VSCode没有应用图标问题

    笔者今天升级了VSCode,安装完后发现Dock(程序坞)没有VSCode的图标了,导致切换应用非常不方便. 具体情况就像下面这张图,VSCode明明开着,但是在Dock找不到VSCode了. 解决办 ...

  9. System.Text.Json 自定义Converter实现时间转换

    Newtonsoft.Json与System.Text.Json区别 在 Newtonsoft.Json中可以使用例如 .AddJsonOptions(options => { options. ...

  10. SDI011 读卡器发送非APDU指令

    1 使用FFFE 发送Raw data 例如: 想要发送raw data :5140 FFFE0000025140 实际收到的是: 0B0051403E1E , (0B:PCB , 00:CID, 3 ...