二叉树的建立及递归遍历
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
二叉树的建立及递归遍历相关推荐
- linux 递归创建线程,[linux]二叉树的建立及其递归遍历(C语言实现)
#二叉树的特点: 每一个节点最多有两棵子树,所以二叉树中不存在度大于2的节点,注意,是最多有两棵,没有也是可以的 左子树和右子树是有顺序的,次序不能颠倒,这点可以在哈夫曼编码中体现, 顺序不同编码方式 ...
- 二叉树的建立和递归遍历
const int MAXN = 1000010; //二叉树的节点的结构体的表示形式 struct Node { char data; struct Node *leftchild, ...
- 二叉树的前序非递归遍历
二叉树的前序非递归遍历 前面学习过二叉树的前序遍历,使用递归的方式.简单回顾一下: Status PerOrder(BiTree T) {//前序遍历二叉树if (T != NULL) {Visit( ...
- 二叉树 2.0 -- 非递归遍历
二叉树递归遍历存在的问题 如果我们的二叉树只有左子树,而且树的高度还很深的时候,这个时候递归调用遍历的时候,栈帧空间开辟的较大,很可能造成栈溢出.但是我们一个程序中,为堆分配的空间要比栈大的多,这个时 ...
- 对于二叉树三种非递归遍历方式的理解
利用栈实现二叉树的先序,中序,后序遍历的非递归操作 栈是一种先进后出的数据结构,其本质应是记录作用,支撑回溯(即按原路线返回):因此,基于其的二叉树遍历操作深刻的体现了其特性: 若后续的输入和其前面的 ...
- 二叉树学习之非递归遍历
二叉树递归遍历可谓是学过数据结构的同仁都能想一下就能写出来,但在应聘过程我们常常遇到的是写出一个二叉树非递归遍历函数,接着上篇文章写二叉树的非递归遍历,先难后易,一步一步的来. 先上代码: #incl ...
- 【代码随想录训练营】【Day14】第六章|二叉树|理论基础|递归遍历|迭代遍历|统一迭代
理论基础 二叉树的定义形式有:节点指针和数组 在数组中,父节点的下标为i,那么其左孩子的下标即i*2+1,右孩子的下标即为i*2+2 二叉树的常见遍历形式有:前序遍历.后序遍历.中序遍历和层序遍历 前 ...
- 二叉树中序非递归遍历
递归是程序设计中强有力的工具.递归函数结构清晰,使程序易读.但递归函数也有不可克服的弱点,时间.空间效率较低,运行代价较高,所以在实际使用中,常希望使用它的迭代版本.为了实现非递归遍历算法,需要一个堆 ...
- 二叉树 中序非递归遍历算法 c++
二叉树的中序非递归算法,详见下 首先,二叉树结点定义 typedef struct BiTNode//二叉树结点结构 {string data;struct BiTNode *lchild,*rchi ...
最新文章
- linux sftp 重命名,linux下ssh/sftp配置和权限设置
- python量化投资必背代码-量化投资:用Python实现金融数据的获取与整理
- 【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize | 混淆 Obfuscate | 预检 | 混淆文件编写 | 混淆前后对比 )
- 【数据分析】年轻人如何才能实现年薪百万呢?
- 在天气预报中应用机器学习
- RO38 –比较RemObjects SDK 通道
- 四元数乘法_JPL四元数和Hamilton四元数的区别
- 【JEECG-Mybatis版本】springmvc+mybatis+代码生成器(代码一键生成)
- HDU3507-Print Article-斜率dp入门题
- MaskFusion:惊艳的结合实例感知、语义分割、动态追踪的SLAM系统
- android自动布局优先级,自动布局AutoLayout
- 安全数组-简易矩阵容器-STL及迭代器仿写作业
- 我的天哪我有博客了!
- Android Listview设置每条信息的间距
- javascript学习心得(1)replace
- MySQL集群和主从复制分别适合在什么场景下使用
- 08flask中get和post请求。
- 计算机网络-01-计算机网络体系结构
- 高德地图根据关键词坐标拾取小工具
- 503组史诗电影预告片音效合集动作破坏冲击紧张大气音效库 Hybrid Trailer
热门文章
- 5G与WiFi 6之争,对物联网意味着什么
- java getstringarray_Java AnnotationAttributes.getStringArray方法代碼示例
- 游戏中常用的寻路算法的分享(3):A*算法的实现
- ADAMoracle预言机的发展趋势和特点
- Python小游戏(打乒乓)
- Auto.js Pro如何连接VS Code插件
- ASP.NET Core微服务(六)——【redis操作】
- MySQL SELECT..INTO OUTFILE语句只能导出1000行的故障
- shell调用各种sqlplus用法
- linux 下修改最大文件数