huangjing

二叉树的的建立方式为前序  二叉树有三种遍历  前序遍历(NLR)  中序遍历(LNR)  兴许遍历(LRN)

非递归的算法明天补上

代码为:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<map>
#include<vector>
#include<cmath>
#include<string>
#include<queue>
#define eps 1e-9
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;typedef struct  BITNode
{char val;struct  BITNode *left,*right;
}BITNode,*BITtree;void buildtree(BITtree &T)
{char  ss;scanf("%c",&ss);if(ss=='#'){T=NULL;return;}else{T=(BITtree)malloc(sizeof(BITNode));T->val=ss;buildtree(T->left);buildtree(T->right);}
}//先序建立二叉树void visit(BITtree T)
{if(T->val!='#')printf("%c",T->val);
}void pre_visit(BITtree T)
{if(T!=NULL){visit(T);pre_visit(T->left);pre_visit(T->right);}
}//遍历方式为NLRvoid mid_visit(BITtree T)
{if(T!=NULL){mid_visit(T->left);visit(T);mid_visit(T->right);}
}//遍历方式为LNRvoid beh_visit(BITtree T)
{if(T!=NULL){beh_visit(T->left);beh_visit(T->right);visit(T);}
}//遍历方式为LRNint main()
{BITtree p;buildtree(p);printf("前序遍历为:\n");pre_visit(p);cout<<endl;printf("中序遍历为:\n");mid_visit(p);cout<<endl;printf("后序遍历为:\n");beh_visit(p);
}/*
ABC##DE#G##F###
-+a##*b##-c##d##/e##f##
*/

转载于:https://www.cnblogs.com/wzzkaifa/p/6978458.html

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

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

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

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

    const int MAXN = 1000010; //二叉树的节点的结构体的表示形式 struct Node {     char data;     struct Node *leftchild, ...

  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. linux sftp 重命名,linux下ssh/sftp配置和权限设置
  2. python量化投资必背代码-量化投资:用Python实现金融数据的获取与整理
  3. 【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize | 混淆 Obfuscate | 预检 | 混淆文件编写 | 混淆前后对比 )
  4. 【数据分析】年轻人如何才能实现年薪百万呢?
  5. 在天气预报中应用机器学习
  6. RO38 –比较RemObjects SDK 通道
  7. 四元数乘法_JPL四元数和Hamilton四元数的区别
  8. 【JEECG-Mybatis版本】springmvc+mybatis+代码生成器(代码一键生成)
  9. HDU3507-Print Article-斜率dp入门题
  10. MaskFusion:惊艳的结合实例感知、语义分割、动态追踪的SLAM系统
  11. android自动布局优先级,自动布局AutoLayout
  12. 安全数组-简易矩阵容器-STL及迭代器仿写作业
  13. 我的天哪我有博客了!
  14. Android Listview设置每条信息的间距
  15. javascript学习心得(1)replace
  16. MySQL集群和主从复制分别适合在什么场景下使用
  17. 08flask中get和post请求。
  18. 计算机网络-01-计算机网络体系结构
  19. 高德地图根据关键词坐标拾取小工具
  20. 503组史诗电影预告片音效合集动作破坏冲击紧张大气音效库 Hybrid Trailer

热门文章

  1. 5G与WiFi 6之争,对物联网意味着什么
  2. java getstringarray_Java AnnotationAttributes.getStringArray方法代碼示例
  3. 游戏中常用的寻路算法的分享(3):A*算法的实现
  4. ADAMoracle预言机的发展趋势和特点
  5. Python小游戏(打乒乓)
  6. Auto.js Pro如何连接VS Code插件
  7. ASP.NET Core微服务(六)——【redis操作】
  8. MySQL SELECT..INTO OUTFILE语句只能导出1000行的故障
  9. shell调用各种sqlplus用法
  10. linux 下修改最大文件数