数据结构(十五) 线索二叉树讲解(带头节点中序加线索) 以及实现的完整代码
来源:互联网 发布:mysql触发器的作用 编辑:程序博客网 时间:2024/04/29 01:47
这篇博客主要讲解的是前序线索化的基础上加上头节点(中序类似),这样做的好处是可以让所有的指针都不为空(即都有指向)。
下篇博客主要讲解后序加上线索化,这个有一定的难度。
实现的代码如下:
//带头节点的二叉树的前序线索化 #include <iostream>using namespace std;//二叉树的结构体typedef struct Node{char data;int ltag;int rtag;struct Node *lchild;struct Node *rchild;}*BiTree; 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 preThreading(BiTree &Tree){if(Tree){if(Tree->lchild==NULL){Tree->ltag=1;Tree->lchild=pre;}if(pre->rchild==NULL){pre->rtag=1;pre->rchild=Tree;}pre = Tree;if(Tree->ltag==0){preThreading(Tree->lchild);}if(Tree->rtag==0){preThreading(Tree->rchild);}}}//前序线索化,加上头节点void preXianBiTree(BiTree Tree,BiTree &Thrt){Thrt = new Node();Thrt->ltag = 0;Thrt->rtag = 1;Thrt->rchild=Thrt;if(Tree==NULL){Thrt->lchild=Thrt;}else{Thrt->lchild=Tree;pre = Thrt;preThreading(Tree);pre->rchild=Thrt;pre->rtag=1;Thrt->rchild=pre;}} //遍历前序加线索化的函数void preBiTree(BiTree Tree){BiTree p;p = Tree->lchild;while(p!=Tree){while(p->lchild!=NULL&&p->ltag==0){cout<<p->data<<" ";p = p->lchild;}cout<<p->data<<" ";if(p->ltag==1){p = p->rchild;}while(p!=Tree){if(p->lchild!=NULL&&p->ltag==0){break;}cout<<p->data<<" ";p = p->rchild;}}} int main(){BiTree Tree,Thrt;cout<<"请输入你要创建的二叉树的数据(按先序遍历创建的二叉树#为空节点的表示)\n";createBiTree(Tree);pre = new Node();pre->rchild=NULL;preXianBiTree(Tree,Thrt);preBiTree(Thrt);return 0;}
0 0
- 数据结构(十五) 线索二叉树讲解(带头节点中序加线索) 以及实现的完整代码
- 数据结构(十六) 线索二叉树讲解(带头节点后序加线索) 以及实现的完整代码
- 数据结构(十四) 线索二叉树讲解(不带头节点中序加线索) 以及实现的完整代码
- 数据结构(十三) 线索二叉树讲解(不带头节点前序加线索) 以及实现的完整代码
- 线索二叉树的完整代码实现
- 线索二叉树详解以及代码实现
- 数据结构(14)--线索二叉树的实现
- 大话数据结构十五:线索二叉树
- 线索二叉树的代码实现
- 线索二叉树的代码实现
- 数据结构-->线索二叉树
- 数据结构--线索二叉树
- 【数据结构】线索二叉树
- 数据结构-线索二叉树
- 数据结构 - 线索二叉树
- 线索二叉树-数据结构
- 【数据结构】线索二叉树
- 数据结构-线索二叉树
- 定时图
- 求IOS录屏并录声音的方案
- 融云即时通讯
- POJ 2084 Game of Connections 卡特兰数+JAVA -
- Linux 重定向
- 数据结构(十五) 线索二叉树讲解(带头节点中序加线索) 以及实现的完整代码
- Android之FileExplore
- MySql使用
- Android 软键盘 禁用回车功能或者换成搜索功能
- <数据结构>二叉树的实现
- Android 传值出现空格 求各位大牛们帮帮忙解决一下
- 我的2016——时间战场
- 2016年付出与收获-javaweb
- html怎样读取导航菜单好