数据结构之二叉树的线索化实现
来源:互联网 发布:淘宝卖家账号是什么 编辑:程序博客网 时间:2024/06/07 02:36
/************************二叉树的线索化*****************/#include"stdio.h"#include"stdlib.h"#define ERROR 0#define OK 1typedef int Status;typedef char ElemType;typedef enum{LINK,THREAD}PointTag;/*LINK==0表示指向左右孩子 THREAD==1表示指向前驱或者后继*/typedef struct TheBiTNode{ElemType data;PointTag ltag,rtag;struct TheBiTNode *lchild, *rchild;}ThrBiTNode, *ThrBiTree;ThrBiTree pre;/************************Operator*******************/ThrBiTree CreateBiTree()//构造二叉树{ElemType ch;ThrBiTree T;scanf(" %c",&ch);if('#'==ch){T=NULL;}else {T=(ThrBiTree)malloc(sizeof(ThrBiTNode));T->data=ch;T->ltag=LINK;T->rtag=LINK;T->lchild=CreateBiTree();T->rchild=CreateBiTree();}return T;}void InThreading(ThrBiTree 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(ThrBiTree Head,ThrBiTree T)//进行二叉树线索化{ Head->ltag = LINK; Head->rtag = THREAD; Head->rchild = Head; if(!T) Head->lchild = Head; else { Head->lchild = T; pre=(ThrBiTree)malloc(sizeof(ThrBiTNode)); pre = Head; InThreading(T); pre->rchild = Head; pre->rtag = THREAD; Head->rchild = pre; } return OK; }Status InOrderTraverse_Thr(ThrBiTree Head)//中序遍历线索二叉树{ThrBiTree p;p=Head->lchild;while(p!=Head){while(p&&p->ltag==LINK)p=p->lchild;printf("%6c",p->data);while(p&&p->rtag==THREAD && p->rchild!=Head){p=p->rchild;printf("%6c",p->data);}p=p->rchild;}return OK;}void PreOrderTraverse(ThrBiTree T)//前序遍历{if(T!=NULL){printf("%c ",T->data);PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);}}main(void){ThrBiTree T,head;head=(ThrBiTree)malloc(sizeof(ThrBiTNode));T=CreateBiTree();PreOrderTraverse(T);printf("xaxdjh\n");InOrderThreading(head,T);printf("xaxdjhasfcdahgdfajfd\n");InOrderTraverse_Thr(head);}/*********************************************//**** 测试用例 ****//**** A B C # # # D E # # F # # ****//*********************************************/
0 0
- 数据结构之二叉树的线索化实现
- 数据结构之二叉树的线索化
- 简单数据结构的实现之线索二叉树
- 数据结构(14)--线索二叉树的实现
- 数据结构:二叉树线索化的部分实现
- 数据结构之线索二叉树
- 数据结构之线索二叉树
- 数据结构之线索二叉树
- 数据结构之线索二叉树
- 数据结构之线索二叉树
- 数据结构之线索二叉树
- 数据结构--二叉树的线索化
- 【数据结构】二叉树的线索化
- 数据结构-二叉树的线索化
- 数据结构 — 二叉树的线索化
- 【数据结构】二叉树的线索化!!
- 数据结构之---C语言实现线索二叉树
- 数据结构之线索二叉树数据结构
- Android设置WIFI不休眠并确保黑屏后网络通信正常的方法
- 工厂模式
- UTF-8编码规则
- JXL组件生成报表报错(二)
- 解决eclipse中 Android SDK Manager 图标不见的方法
- 数据结构之二叉树的线索化实现
- AO开发中QI(接口查询)理解
- Qt应用程序中设置字体
- HDU 3032 Nim or not Nim? (博弈之求SG函数)
- 组合模式
- POJ1236 Network of Schools
- 热备份、温备份、冷备份(Hot/Warm/Cold Backup)
- 策略模式
- MySQL存储引擎MyISAM与InnoDB的主要区别对比