#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. LeetCode29 Medium 不用除号实现快速除法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 链接 Divide Two Integers 难度 Medium 描述 给定两个整数,被除数和除数,要求在不使用除号的情况下计算出两数的商 ...

  2. Nexus 安装

    Windows下安装Nexus OSS 3.12.1 1. Nexus 下载 到sonatype官网下载开源免费的OSS版本.OSS即为Open Source Software. 下载地址:https ...

  3. 6.【Spring Cloud Alibaba】API网关-SpringCloudGateway

    SpringCloud Gateway是什么?优缺点分析 springCloud Gateway优点 springCloud Gateway缺点 编写SpringCloundGateway pom.x ...

  4. 进阶之路 | 奇妙的Window之旅

    前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 学习清单: Window&WindowManagerService Window&Window ...

  5. Magicodes.IE基础教程之导出Pdf

    原文作者:hueifeng 说明 本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出 要点 导出PDF数据 自定义PDF模板 导出单据 如何批量导出单据 导出特性说明 PdfEx ...

  6. DotNet 源码学习——QUEUE

    1.Queue声明创建对象.(Queue为泛型对象.) public class Queue<T> :IEnumerable<T>,System.Collections.ICo ...

  7. php面试笔记(6)-php基础知识-正则表达式考点

    本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而正则表达式相关 ...

  8. [MongoDB]mongodb的命令行操作

    ./mongo1.查看所有数据库show dbs2.切换数据库use 数据库名3.查询所有集合show collections4.查询所有文档db.文档名.find()db.文档名.find().pr ...

  9. yum 程序包管理简介

    rpm可以实现程序的快速,简单安装(跟编译安装比),但是rpm自己不能解决依赖,所以很多工具为了自动解决依赖应运而生,其中yum就是其中之一. yum解决依赖的办法: 必须有个文件服务器,里面放置所以 ...

  10. idea如何做到多模块开发项目 收藏整理

    idea如何做到多模块开发项目 <packaging>pom</packaging>是什么意思? idea 快捷键汇总