const int MAXN = 1000010;
//二叉树的节点的结构体的表示形式
struct Node
{
    char data;
    struct Node *leftchild,*rightchild;
}BTree;
//栈的结构体的表示形式
struct sstack
{
    BTree *map_stack[MAXN];
    int top;
}Stack;
//队列的结构体的表示形式
struct qqueue
{
    BTree *map_queue[MAXN];
    int head;
    int tail;
}Queue;
//创建二叉树,利用递归的方法
BTree *BuildTree()
{
    char char_str;
    printf(" %c",&char_str);
    if(char_str == '#')//"#"表示的是该树的该孩子是空的
    {
        return null;
    }
    else
    {
        BTree * Bree = (BTree*)malloc(sizeof(BTree));
        if(Bree == null)
        {
            return null;
        }
        Bree.data = char_str;
        Bree -> leftchild = BuildTree();
        Bree -> rightchild = BuildTree();
        return Bree;
    }
}
//前序遍历,递归方法实现
void Preorder(BTree *BT)
{
    if(BT == null)
    {
        return ;
    }
    printf("%c ",BT -> data);
    Preorder(BT -> leftchild);
    Preorder(BT -> rightchild);
}
//中序遍历,递归方法实现
void Inorder(BTree *BT)
{
    if(BT == null)
    {
        return ;
    }
    Inorder(BT -> leftchild);
    printf("%c ",BT -> data);
    Inorder(BT -> rightchild);
}
//后序遍历,递归方法实现
void Postorder(BTree *BT)
{
    if(BT == null)
    {
        return ;
    }
    Postorder(BT -> leftchild);
    Postorder(Bt -> rightchild);
    printf("%c ",BT -> data);
}

转载于:https://www.cnblogs.com/GODLIKEING/p/3370254.html

二叉树的建立和递归遍历相关推荐

  1. linux 递归创建线程,[linux]二叉树的建立及其递归遍历(C语言实现)

    #二叉树的特点: 每一个节点最多有两棵子树,所以二叉树中不存在度大于2的节点,注意,是最多有两棵,没有也是可以的 左子树和右子树是有顺序的,次序不能颠倒,这点可以在哈夫曼编码中体现, 顺序不同编码方式 ...

  2. 二叉树的建立及递归遍历

    huangjing 二叉树的的建立方式为前序  二叉树有三种遍历  前序遍历(NLR)  中序遍历(LNR)  兴许遍历(LRN) 非递归的算法明天补上 代码为: #include<iostre ...

  3. 二叉树的前序非递归遍历

    二叉树的前序非递归遍历 前面学习过二叉树的前序遍历,使用递归的方式.简单回顾一下: Status PerOrder(BiTree T) {//前序遍历二叉树if (T != NULL) {Visit( ...

  4. 二叉树 2.0 -- 非递归遍历

    二叉树递归遍历存在的问题 如果我们的二叉树只有左子树,而且树的高度还很深的时候,这个时候递归调用遍历的时候,栈帧空间开辟的较大,很可能造成栈溢出.但是我们一个程序中,为堆分配的空间要比栈大的多,这个时 ...

  5. 对于二叉树三种非递归遍历方式的理解

    利用栈实现二叉树的先序,中序,后序遍历的非递归操作 栈是一种先进后出的数据结构,其本质应是记录作用,支撑回溯(即按原路线返回):因此,基于其的二叉树遍历操作深刻的体现了其特性: 若后续的输入和其前面的 ...

  6. 二叉树学习之非递归遍历

    二叉树递归遍历可谓是学过数据结构的同仁都能想一下就能写出来,但在应聘过程我们常常遇到的是写出一个二叉树非递归遍历函数,接着上篇文章写二叉树的非递归遍历,先难后易,一步一步的来. 先上代码: #incl ...

  7. 【代码随想录训练营】【Day14】第六章|二叉树|理论基础|递归遍历|迭代遍历|统一迭代

    理论基础 二叉树的定义形式有:节点指针和数组 在数组中,父节点的下标为i,那么其左孩子的下标即i*2+1,右孩子的下标即为i*2+2 二叉树的常见遍历形式有:前序遍历.后序遍历.中序遍历和层序遍历 前 ...

  8. 二叉树中序非递归遍历

    递归是程序设计中强有力的工具.递归函数结构清晰,使程序易读.但递归函数也有不可克服的弱点,时间.空间效率较低,运行代价较高,所以在实际使用中,常希望使用它的迭代版本.为了实现非递归遍历算法,需要一个堆 ...

  9. 二叉树 中序非递归遍历算法 c++

    二叉树的中序非递归算法,详见下 首先,二叉树结点定义 typedef struct BiTNode//二叉树结点结构 {string data;struct BiTNode *lchild,*rchi ...

最新文章

  1. 【UVA】10152 ShellSort (几只乌龟的故事)
  2. Redhat9五笔输入法安装
  3. java 子线程传参_踩坑之Java执行Linux命令死锁阻塞挂起
  4. ThinkPHP 中M方法和D方法的具体区别
  5. 2020年快手校招JAVA岗笔试第二题
  6. element.style内联样式修改
  7. 中科大 计算机网络9 互联网历史
  8. win10 设置游戏全屏
  9. 驰声科技推出AI对话考辅系统 将VR引入语音评测
  10. 人头检测 模型 c++_常熟市房屋建筑检测鉴定服务单位 房屋鉴定中心
  11. 上海蓝光集团公司信息化建设规划方案
  12. 荣耀手机计算机设置功能,荣耀Play手机如何开启USB调试功能和电脑进行连接
  13. springmvc视图解析器详解
  14. 集合框架(Collection)——Map和例题
  15. 什么是范数(norm)?以及L1,L2范数的简单介绍
  16. 【5G系列】高层协议栈——协议栈架构
  17. 【JavaScript-9】Javascript中的布尔值和等式
  18. python两台电脑文件传输_两行python代码实现一个http服务器,告别文件传输烦恼...
  19. tensorflow 1.14 ssd_mobilenet_v1 模型训练
  20. 专利编写——发明专利请求书

热门文章

  1. python怎么安装matplotlib-python安装matplotlib
  2. python条件语句-Python if else条件语句详解
  3. python画曲线-如何通过python画loss曲线的方法
  4. python 编程一日一练-Python每日一练0013
  5. python批量下载网页文件-超简单超详细python小文件、大文件、批量下载教程
  6. 编程软件python下载-Thonny(Python编程工具) v3.2.7 官方版
  7. python考级证书-python二级证书有用吗
  8. python和c学习-关于本站 - cPython - 给大学生的入门教程
  9. python绘制散点图-matplotlib在python上绘制3D散点图实例详解
  10. python基础第三章选择结构答案-python3 学习笔记(二)选择结构、循环结构