线索二叉树和中序非递归遍历线索化后的二叉树
//线索二叉树
#include<stdio.h>
#include<malloc.h>
#include<process.h>
#define OVERFLOW -2
//二叉树的二叉线索存储结构
enum PointerTag{Link,Thread}; //枚举类型,Link(0):指针,Thread(1):线索
struct BiThrNode
{char data;BiThrNode *lchild,*rchild;//左右孩子指针PointerTag LTag,RTag;//左右标志
};
typedef BiThrNode *BiThrTree;//按照先序的次序输入二叉树中节点的值,构造线索二叉树T,char,空格表示空节点
void CreateBiThrTree( BiThrTree &T)
{char ch;scanf("%c",&ch);if(ch == ' ')T=NULL;else{T=(BiThrTree)malloc(sizeof(BiThrNode));//生成根节点,先序if(!T)exit(OVERFLOW);T->data=ch;//给根节点赋值CreateBiThrTree(T->lchild);//递归构造左子树if(T->lchild)//如果有左孩子T->LTag=Link;//给坐标值赋值为0CreateBiThrTree(T->rchild);//递归构造右子树if(T->rchild)T->RTag=Link;//如果有右孩子,就给右标志赋值为0}
}
BiThrTree pre;//全局变量,始终指向刚刚访问过的节点//通过中序遍历进行中序线索化,线索化之后,pre指向最后一个节点
void InThreading(BiThrTree p)/
线索二叉树和中序非递归遍历线索化后的二叉树相关推荐
- 二叉树的中序非递归遍历
二叉树的中序非递归遍历 中序遍历的非递归算法描述如下: 从根节点开始检索,如果当前节点不为空,则将当前节点入栈,让当前节点成为其左孩子节点,再继续上一步的操作 加入当前节点为空了,说明其父节点已经没有 ...
- 二叉树中序非递归遍历
递归是程序设计中强有力的工具.递归函数结构清晰,使程序易读.但递归函数也有不可克服的弱点,时间.空间效率较低,运行代价较高,所以在实际使用中,常希望使用它的迭代版本.为了实现非递归遍历算法,需要一个堆 ...
- 中序非递归遍历二叉树
二叉树的递归算法虽然简单,但是会导致时间复杂度比较高,下面给大家带来用栈实现的二叉树非递归算法 首先定义好二叉树,和元素类型为二叉树的栈 typedef struct BiTNode{TElemTyp ...
- 二叉树 中序非递归遍历算法 c++
二叉树的中序非递归算法,详见下 首先,二叉树结点定义 typedef struct BiTNode//二叉树结点结构 {string data;struct BiTNode *lchild,*rchi ...
- 数据结构: 中序非递归遍历二叉树
status InOrderTraverse(BiTree T,status (*visit)(TElementType e) { InitStack(s); p=T; while(p||!Stack ...
- 线索二叉树中序非递归线索化以及递归线索化构建和遍历算法
引文 大部分教材给出了 线索二叉树的中序递归线索化以及中序遍历,但是没给出非递归,现在网上大部分非递归算法代码各种条件判断写的比较离谱,所以干脆自己总结了一个清晰的.线索二叉树中序非递归线索化以及递归 ...
- 数据结构专题 | 先序非递归遍历二叉树
先序非递归遍历二叉树,主要是利用了栈的先进后出原理,用一个栈即可实现该算法,下面我们一起来看一下如何来实现吧 目录 先序建立二叉树 先序递归遍历二叉树 先序非递归遍历二叉树 先序建立二叉树 在进行先序 ...
- 二叉树的后序非递归遍历(巧妙思想)
大家都知道二叉树的前序非递归遍历非常好写: //二叉树的结构 public class TreeNode {TreeNode left;TreeNode right;int val;TreeNode( ...
- 后序非递归遍历二叉树
后序遍历的顺序是左.右.根.而前序遍历的顺序是根.左.右.所以只需将前序遍历稍作改变,变成先遍历根再遍历右最后遍历左即(根右左)就会发现此时的顺序便是后序遍历的倒序了,所以这时候只需将改变后的前序遍历 ...
最新文章
- 前端需要什么样的方案设计
- Python学习—函数
- Linux环境下gcc编译链接库-lz -lrt -lm -lc都是什么库?
- 大数据新手之路二:安装Flume
- 多布局怎么搭建_关键词SEO优化怎么做?具体包括哪些方面?
- 金山手机控usb调试模式开启工具_话筒坏了无法连麦?一招手机秒变电脑麦克风...
- tt桌球瞄准器手机版_法国或将禁止不可拆卸手机,想当年手机后盖随便拆开玩儿...
- python任务调度系统web_监听调度系统定时执行任务python_websock
- 亲测!这本 Python 书销量超过13W+原来是这样
- 悟空问答 模板 html,悟空问答上首页技巧每小时2500个阅读快速为自己吸粉.pdf
- 教你如何使用automake生成Makefile文件
- Python如何实现人脸识别系统
- PDM与ERP系统集成设计
- 【VBA研究】打印表单时指定打印机
- mysql strtolower_自己写的mysql类_PHP教程 - strtolower
- 级联查询ajax,ajax级联查询
- Python疫情数据分析+数据可视化展示
- ni max不能连续采集图像_图像识别技术在智慧教室录播系统中的应用研究
- Microbiome:微生物组名词定义
- 编程的97件事——1、谨慎行事