数据结构 二叉树的线索存储
2013-12-10 19:33
344 查看
#include <stdio.h> #include <stdlib.h> #include <iostream.h> #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef char TElemType; typedef enum {Link,Thread} PointerTag; typedef struct BiThrNode { TElemType data; struct BiThrNode *lchild,*rchild; PointerTag LTag; PointerTag RTag; }BiThrNode, *BiThrTree; BiThrTree pre; void Create_BiThrTree(BiThrTree &T) { TElemType ch; cin >> ch; if (ch == '#') { T = NULL; } else { T = (BiThrTree)malloc(sizeof(BiThrNode)); if (!T) { exit(OVERFLOW); } T->data = ch; Create_BiThrTree(T->lchild); if (T->lchild) { T->LTag = Link; } Create_BiThrTree(T->rchild); if (T->rchild) { T->RTag = Link; } } } void InThreading(BiThrTree p) { if (p) { InThreading(p->lchild); if (!p->lchild) { p->LTag = Thread; p->lchild = pre; } if (!pre->rchild) { pre->RTag = Thread; pre->rchild = p; } pre = p; InThreading(p->rchild); } } int InOrderThreading(BiThrTree &Thrt, BiThrTree T) { if (!(Thrt = (BiThrTree)malloc(sizeof(BiThrNode)))) { exit(OVERFLOW); } Thrt->LTag = Link; Thrt->RTag = Thread; Thrt->rchild = Thrt; if (!T) { Thrt->lchild = Thrt; } else { Thrt->lchild = T; pre = Thrt; InThreading(T); pre->rchild = Thrt; pre->RTag = Thread; Thrt->rchild = pre; } return OK; } int InOrderTraverse_Thr(BiThrTree T) { BiThrTree p; p = T->lchild; while (p != T) { while (p->LTag == Link) { p = p->lchild; } printf("%c",p->data); while (p->RTag == Thread && p->rchild != T) { p = p->rchild; printf("%c",p->data); } p = p->rchild ; } return OK; } int main() { BiThrTree T,H; Create_BiThrTree(T); InOrderThreading(H,T); InOrderTraverse_Thr(T); printf("\n"); return 0; }
相关文章推荐
- 二叉树的存储结构(数据结构)
- 【ShancoLove】带你看数据结构——第九课:二叉树的存储与遍历
- 数据结构--二叉树--按给定的先序序列建立二叉链表(二叉树的存储)
- 数据结构:二叉树的链式存储
- 设计一个算法,找出二叉树中某两个结点的第一个公共祖先.。不得将额外的结点存储在另外的数据结构中。注意:这不一定是二叉查找树。
- 二叉树的存储结构 - 数据结构和算法45
- 数据结构 树的创建(线索化二叉树)
- 数据结构::线索化二叉树
- 2015年大二上-数据结构-树和二叉树-2-(4)中序线索化二叉树
- 数据结构:二叉树的遍历和存储结构
- 输入一组整数后用c语言数据结构对其进行大小比较以二叉树存储、遍历
- 6-7-树的二叉链表(孩子-兄弟)存储表示-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版
- 【数据结构】线索化二叉树
- 【数据结构_树_Tree_0981】统计利用二叉树存储的森林中树的棵数
- 数据结构--二叉树--按给定的表达式健相应的二叉树(二叉树的存储)
- 数据结构:二叉树的二叉链表存储--Java实现
- 请问二叉树等数据结构的物理存储结构是怎样的?
- 数据结构-二叉树的线索化
- 二叉树的链式存储结构----(循环)双向线索链表
- 数据结构:二叉树的定义与存储