数据结构 二叉树 索引链表 及其索引话 输出
2012-11-09 09:42
337 查看
#include <iostream> #include <string.h> using namespace std; class tree { public: char c; tree *lchild,*rchild; int ltag,rtag; }; char c; tree *pre; int main() { void build(tree * &p); void inthread(tree* p,tree* &list); void Inorder(tree* p,tree* list); tree *head,*list; build(head); inthread(head,list); Inorder(head,list); cout<<endl; return 0; } void build(tree* &p) { cin>>c; if(c=='$') { p=NULL; }else { p=new(tree); p->c=c; p->ltag=0; p->rtag=0; build(p->lchild); build(p->rchild); } } void inorderthread(tree *p) { if(p) { inorderthread(p->lchild); if(!p->lchild) { p->ltag=1; p->lchild=pre; } if(!pre->rchild) { pre->rtag=1; pre->rchild=p; } pre=p; inorderthread(p->rchild); } } void inthread(tree* p,tree* &list) { list=new(tree); list->ltag=0; list->rtag=1; list->rchild=list; if(p==NULL) { list->lchild=list; }else { list->lchild=p; pre=list; inorderthread(p); pre->rchild=list; pre->rtag=1; list->rchild=pre; } } void Inorder(tree* p,tree *list) { while(p!=list) { while(p->ltag==0) { p=p->lchild; } cout<<p->c; while(p->rtag&&p->rchild!=list) { p=p->rchild; cout<<p->c; } p=p->rchild; } }
相关文章推荐
- 数据结构第三部分:树与树的表示、二叉树及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树、集合及其运算
- [数据结构]二叉树及其遍历
- 【数据结构】输入二叉树的前序序列,输出二叉树的不同度的结点个数
- 数据结构:二叉树的二叉链表存储--Java实现
- 【数据结构_树_Tree_0987】输出用先序遍历创建的二叉树是否为完全二叉树的判定结果
- 6-6-树的孩子链表(带双亲)存储表示法-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版
- 数据结构--二叉树(线索链表)
- 内核数据结构:链表,队列,映射二叉树
- Java中链表、堆栈、队列、二叉树、散列表等数据结构的实现
- MySQL调优和性能分析之索引及其数据结构
- 数据结构:题目(1)二叉树转换为双向链表
- 数据结构代码补全-C版-二叉树及其应用
- 链表从尾到头输出及其扩展
- 数据结构类型定义及基本操作汇总(二)-- 二叉树及其遍历
- 微软等数据结构+算法面试100题(32)--从尾到头输出链表
- 数据结构二叉树之通过前序和中序恢复二叉树后续方法输出
- 数据结构(二)——单链表 、带头结点的单链表、循环链表 及其实现
- [算法与数据结构] - No.7 二叉树建立及其前序、中序、后序遍历
- 3.数据结构单链表之链表索引
- 二叉树的建立,删除,查找,插入,输出(数据结构)