欢迎使用CSDN-markdown编辑器
来源:互联网 发布:淘宝的天天特价在哪里 编辑:程序博客网 时间:2024/04/28 23:27
#include<stdio.h>//线索二叉树#include<stdlib.h>#include<malloc.h>#define OK 1#define OVERFLOW -1#define ERROR 0typedef int Status;typedef char TElemType;typedef enum PointerTag{Link,Thread};typedef struct BiThrNode{ TElemType data; struct BiThrNode *lchild,*rchild; PointerTag LTag,Rtag;}BiThrNode,*BiThrTree;BiThrTree pre;Status PrintElement(TElemType e){ printf("%c",e); return OK;}/*Status PreOrderTraverse(BiThrTree T,Status (*Visit)(TElemType e)){ if(T){ if(Visit(T->data)) if(PreOrderTraverse(T->lchild,Visit)) if(PreOrderTraverse(T->rchild,Visit)) return OK; return ERROR; }else return OK;}*/Status CreateBiTree(BiThrTree &T){ TElemType ch; scanf("%c",&ch); if(ch=='#') T=NULL; else{ if(!(T=(BiThrNode*)malloc(sizeof(BiThrNode)))) exit(OVERFLOW); T->data=ch; T->LTag=Link; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } return OK;}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); }}Status InOrderThreading(BiThrTree &Thrt,BiThrTree T){ if(!(Thrt=(BiThrNode*)malloc(sizeof(BiThrNode)))) exit(OVERFLOW); Thrt->LTag=Link; 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; }}Status InOrderTraverse_Thr(BiThrTree T,Status (*Visit)(TElemType e)){ BiThrTree p; p=T->lchild; while(p!=T){ while(p->LTag==Link) p=p->lchild; if(!Visit(p->data)) return ERROR; while(p->Rtag==Thread&&p->rchild!=T){ p=p->rchild; Visit(p->data); } p=p->rchild; } return OK;}int main(){ BiThrTree T; CreateBiTree(T); //pre=T; //PreOrderTraverse(T,PrintElement); BiThrTree Thrt; InOrderThreading(Thrt,T); InOrderTraverse_Thr(Thrt,PrintElement); return 0;}
阅读全文
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- js中的=>
- Verilog学习笔记基本语法篇(七)········ 生成块
- 作业2
- Innodb事务种类及实现
- tensorflow直接读取图像数据之gfile,WholeFileReader,read_file
- 欢迎使用CSDN-markdown编辑器
- Verilog学习笔记基本语法篇(八)········ 结构说明语句
- hdu 2612Find a way (BFS~)
- Cobub无码埋点关键技术的实现
- 简单排序之冒泡排序和选择排序
- HDU 4009 Transfer water
- Python的pickle模块详解
- 基于dubbo框架下的RPC通讯协议性能测试
- 用大白菜为戴尔电脑做系统