严蔚敏 数据结构 算法6.5
来源:互联网 发布:ff14拉拉菲尔捏脸数据 编辑:程序博客网 时间:2024/05/16 11:15
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef enum PointerTag {Link,Thread}PointerTag;
typedef struct BiThrNode{
char data;
struct BiThrNode *lchild,*rchild;
PointerTag LTag,RTag;
}BiThrNode,*BiThrTree;
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;
}
printf("\n");
return 1;
}
int main(void){
BiThrTree L,A,B,C,D,E,F,G,H,I,J,K;
L=(BiThrTree)malloc(sizeof(BiThrNode));
A=(BiThrTree)malloc(sizeof(BiThrNode));
B=(BiThrTree)malloc(sizeof(BiThrNode));
C=(BiThrTree)malloc(sizeof(BiThrNode));
D=(BiThrTree)malloc(sizeof(BiThrNode));
E=(BiThrTree)malloc(sizeof(BiThrNode));
F=(BiThrTree)malloc(sizeof(BiThrNode));
G=(BiThrTree)malloc(sizeof(BiThrNode));
H=(BiThrTree)malloc(sizeof(BiThrNode));
I=(BiThrTree)malloc(sizeof(BiThrNode));
J=(BiThrTree)malloc(sizeof(BiThrNode));
K=(BiThrTree)malloc(sizeof(BiThrNode));
L->LTag=0;L->lchild=A;L->RTag=1;L->rchild=G;
A->LTag=0;A->RTag=0;A->lchild=B;A->rchild=C;A->data='-';
B->LTag=0;B->RTag=0;B->lchild=D;B->rchild=E;B->data='+';
C->LTag=0;C->RTag=0;C->lchild=F;C->rchild=G;C->data='/';
D->LTag=1;D->RTag=1;D->lchild=L;D->rchild=B;D->data='a';
E->LTag=0;E->RTag=0;E->lchild=H;E->rchild=I;E->data='*';
F->LTag=1;F->RTag=1;F->lchild=A;F->rchild=C;F->data='e';
G->LTag=1;G->RTag=1;G->lchild=C;G->rchild=L;G->data='f';
H->LTag=1;H->RTag=1;H->lchild=B;H->rchild=E;H->data='b';
I->LTag=0;I->RTag=0;I->lchild=J;I->rchild=K;I->data='-';
J->LTag=1;J->RTag=1;J->lchild=E;J->rchild=I;J->data='c';
K->LTag=1;K->RTag=1;K->lchild=I;K->rchild=A;K->data='d';
InOrderTraverse_Thr(L);
return 1;
}
#include<stdlib.h>
#include<string.h>
typedef enum PointerTag {Link,Thread}PointerTag;
typedef struct BiThrNode{
char data;
struct BiThrNode *lchild,*rchild;
PointerTag LTag,RTag;
}BiThrNode,*BiThrTree;
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;
}
printf("\n");
return 1;
}
int main(void){
BiThrTree L,A,B,C,D,E,F,G,H,I,J,K;
L=(BiThrTree)malloc(sizeof(BiThrNode));
A=(BiThrTree)malloc(sizeof(BiThrNode));
B=(BiThrTree)malloc(sizeof(BiThrNode));
C=(BiThrTree)malloc(sizeof(BiThrNode));
D=(BiThrTree)malloc(sizeof(BiThrNode));
E=(BiThrTree)malloc(sizeof(BiThrNode));
F=(BiThrTree)malloc(sizeof(BiThrNode));
G=(BiThrTree)malloc(sizeof(BiThrNode));
H=(BiThrTree)malloc(sizeof(BiThrNode));
I=(BiThrTree)malloc(sizeof(BiThrNode));
J=(BiThrTree)malloc(sizeof(BiThrNode));
K=(BiThrTree)malloc(sizeof(BiThrNode));
L->LTag=0;L->lchild=A;L->RTag=1;L->rchild=G;
A->LTag=0;A->RTag=0;A->lchild=B;A->rchild=C;A->data='-';
B->LTag=0;B->RTag=0;B->lchild=D;B->rchild=E;B->data='+';
C->LTag=0;C->RTag=0;C->lchild=F;C->rchild=G;C->data='/';
D->LTag=1;D->RTag=1;D->lchild=L;D->rchild=B;D->data='a';
E->LTag=0;E->RTag=0;E->lchild=H;E->rchild=I;E->data='*';
F->LTag=1;F->RTag=1;F->lchild=A;F->rchild=C;F->data='e';
G->LTag=1;G->RTag=1;G->lchild=C;G->rchild=L;G->data='f';
H->LTag=1;H->RTag=1;H->lchild=B;H->rchild=E;H->data='b';
I->LTag=0;I->RTag=0;I->lchild=J;I->rchild=K;I->data='-';
J->LTag=1;J->RTag=1;J->lchild=E;J->rchild=I;J->data='c';
K->LTag=1;K->RTag=1;K->lchild=I;K->rchild=A;K->data='d';
InOrderTraverse_Thr(L);
return 1;
}
0 0
- 严蔚敏 数据结构 算法6.5
- 严蔚敏数据结构之递归算法
- 严蔚敏-数据结构-递归算法总结
- 数据结构&算法
- 数据结构算法
- 数据结构算法
- 数据结构算法
- 数据结构算法
- 数据结构算法
- 数据结构算法
- 数据结构算法
- 数据结构 算法
- 数据结构-算法
- 数据结构算法
- 数据结构-算法
- 数据结构+算法
- 数据结构&算法
- 数据结构+算法
- 我的架构经验系列文章 - 后端架构 - 语言层面
- 我的架构经验系列文章 - 后端架构 - 系统层面
- HDU - 1061 Rightmost Digit
- 设计包含min函数的栈
- 加密 解密 函数
- 严蔚敏 数据结构 算法6.5
- HDU 1533 Going Home【km应用】
- 小文件解决方案
- memcache -- memory allocation
- 阿斯顿肺结核房管局股份好几个复活节
- MySQL启动分析 --> /MySQL5.6/sql/mysqld.cc
- 游戏开发(三)——WIN32 黑白棋(一)——棋局逻辑的设计
- 数据结构和算法设计专题之---求子数组和的最大值
- Python中的psutil:一个用于获得处理器和系统相关信息的模块