线索二叉树
来源:互联网 发布:mac关闭文件夹快捷键 编辑:程序博客网 时间:2024/06/05 17:58
#include<iostream>using namespace std;//线索存储标志位//Link(0):表示指向左右孩子的指针//Thread(1):表示指向前驱后继的线索typedef enum {Link, Thread} pointerTag;//建立树的结点typedef struct BiThrNode {char data;struct BiThrNode *rchild, *lchild;pointerTag ltag, rtag;}BiThrNode, *BithrTree;//全局变量,始终指向刚刚访问过的结点BithrTree pre;//建立线索二叉树void creatThrTree(BithrTree &T){char c;cin >> c;if (c == '0'){T = NULL;}else{T = (BiThrNode*)malloc(sizeof(BiThrNode));T->data = c;T->ltag = Link;T->rtag = Link;creatThrTree(T->lchild);creatThrTree(T->rchild);}}void visit (char c){cout << c;}//中序遍历二叉树void InOrderThrBiTree (BithrTree T){if (T){InOrderThrBiTree (T->lchild); //递归左孩子线索化// 结点处理if (!T->lchild){T->ltag = Thread;T->lchild = pre;}if (!pre->rchild){pre->rtag = Thread;pre->rchild = T;}pre = T;visit(T->data);InOrderThrBiTree (T->rchild); //递归右孩子线索化}}void InOrderThr(BithrTree p, BithrTree T){p= (BithrTree)malloc(sizeof(BiThrNode));p->ltag = Link;p->rtag = Thread;p->rchild = p;if (!T){p->lchild = p;}else{p->lchild = T;pre = p;InOrderThrBiTree(T);pre->rchild = p;pre->rtag = Thread;p->rchild = pre;}}int main (){BithrTree p = NULL, T = NULL;creatThrTree(T);InOrderThr(p,T);cout << endl;system("pause");return 0;}
0 0
- 线索二叉树 --->树
- 线索二叉树算法
- C#线索二叉树
- 线索二叉树
- C#线索二叉树
- 线索二叉树
- 线索二叉树
- 线索化二叉树
- 线索二叉树
- C#线索二叉树
- C#线索二叉树
- 线索二叉树
- 线索二叉树实例
- 线索二叉树
- 线索二叉树算法
- C++线索二叉树
- 线索二叉树
- 线索二叉树实现
- python 主义字符的使用
- Linux学习笔记(三)——配置SecureCRT连接VirtualBox虚拟机中的Linux环境
- 从C开始_概览_使用C语言编程的几个步骤
- Java实现 AES加密
- sizeof
- 线索二叉树
- libc.so.6 is needed
- 计知共求出被角日节间石才号术安快命要要是事
- Tomcat异常停止
- 单例模式
- 表达式树及其变体,以及我是如何借着个原理实现简易计算器的功能的
- C++类构造函数初始化列表
- Android错误信息的汇总
- Haxe and Flash Basic