数据结构(十四) 线索二叉树讲解(不带头节点中序加线索) 以及实现的完整代码
来源:互联网 发布:软件服务商合作模式 编辑:程序博客网 时间:2024/04/28 16:54
中序线索话何上一篇博客的前序加线索化思路是一样的。
下面是实现的代码:
//为二叉链表加中序线索化 (不带头节点)#include <iostream>using namespace std;//线索化的结构体 typedef struct Node{char data;int ltag;int rtag;struct Node *lchild;struct Node *rchild;}*BiTree;//pre为前驱节点。为全局变量 ,初始化时右子树为空 BiTree pre;//中序实现创建二叉树 void createBiTree(BiTree &Tree){char data;cin>>data;if(data=='#'){Tree = NULL;}else{Tree = new Node();Tree->data = data;Tree->ltag = 0;Tree->rtag=0;createBiTree(Tree->lchild);createBiTree(Tree->rchild);}}//中序线索化的实现void function(BiTree &Tree){if(Tree){function(Tree->lchild);if(Tree->lchild==NULL){Tree->ltag=1;Tree->lchild=pre;}if(pre->rchild==NULL){pre->rtag=1;pre->rchild=Tree;}pre = Tree;function(Tree->rchild);}}//中序遍历 左根右 void preBiTree(BiTree Tree){if(Tree==NULL){cout<<"是空数\n";exit(1);}while(Tree!=NULL){while(Tree!=NULL&&Tree->ltag==0){Tree = Tree->lchild;}cout<<Tree->data<<" ";while(Tree!=NULL&&Tree->rtag==1){Tree = Tree->rchild;cout<<Tree->data<<" ";}Tree=Tree->rchild;}} int main(){BiTree Tree;cout<<"请输入你要创建的二叉树的数据(按先序遍历创建的二叉树#为空节点的表示)\n";createBiTree(Tree);pre = new Node();pre->lchild=NULL; function(Tree);preBiTree(Tree);return 0;}
0 0
- 数据结构(十四) 线索二叉树讲解(不带头节点中序加线索) 以及实现的完整代码
- 数据结构(十五) 线索二叉树讲解(带头节点中序加线索) 以及实现的完整代码
- 数据结构(十六) 线索二叉树讲解(带头节点后序加线索) 以及实现的完整代码
- 数据结构(十三) 线索二叉树讲解(不带头节点前序加线索) 以及实现的完整代码
- 线索二叉树的完整代码实现
- 线索二叉树详解以及代码实现
- 数据结构(14)--线索二叉树的实现
- 线索二叉树的代码实现
- 线索二叉树的代码实现
- 数据结构-->线索二叉树
- 数据结构--线索二叉树
- 【数据结构】线索二叉树
- 数据结构-线索二叉树
- 数据结构 - 线索二叉树
- 线索二叉树-数据结构
- 【数据结构】线索二叉树
- 数据结构-线索二叉树
- 数据结构--线索二叉树
- 学生成绩管理系统(摘自C语言程序设计与实践)
- HDU 2255 奔小康赚大钱(最佳二分图匹配)
- 【LeetCode】34. Search for a Range
- 使用gson解析json后怎么把数组放到listview中
- 安卓TextView换行问题
- 数据结构(十四) 线索二叉树讲解(不带头节点中序加线索) 以及实现的完整代码
- 关于cordova打包apk右滑返回事件如何禁止
- [数据结构]java实现的简单链表的 头/尾插法
- 视频监控相关协议
- Python
- 小米手机无法使用WindowManager的addView,怎么解决
- 实现类似某宝的“我的订单”的界面功能
- 大型网站技术架构剖析
- 混淆器proguard-android 送300分