This commit is contained in:
Xu Bai
2019-07-27 23:35:56 +08:00
parent 68d63908f9
commit bb5e3fd163
3 changed files with 4 additions and 143 deletions

View File

@@ -1,139 +0,0 @@
#include "string.h"
#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "math.h"
#include "time.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 100 /* <20><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
typedef int Status; /* Status<75>Ǻ<EFBFBD><C7BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ֵ<EFBFBD>Ǻ<EFBFBD><C7BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>,<2C><>OK<4F><4B> */
typedef char TElemType;
typedef enum {Link,Thread} PointerTag; /* Link==0<><30>ʾָ<CABE><D6B8><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>ָ<EFBFBD><D6B8>, */
/* Thread==1<><31>ʾָ<CABE><D6B8>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD> */
typedef struct BiThrNode /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD>ṹ */
{
TElemType data; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
struct BiThrNode *lchild, *rchild; /* <20><><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>ָ<EFBFBD><D6B8> */
PointerTag LTag;
PointerTag RTag; /* <20><><EFBFBD>ұ<EFBFBD>־ */
} BiThrNode, *BiThrTree;
TElemType Nil='#'; /* <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Կո<D4BF><D5B8><EFBFBD>Ϊ<EFBFBD><CEAA> */
Status visit(TElemType e)
{
printf("%c ",e);
return OK;
}
/* <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>ֵ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T */
/* 0(<28><><EFBFBD><EFBFBD>)/<2F>ո<EFBFBD>(<28>ַ<EFBFBD><D6B7><EFBFBD>)<29><>ʾ<EFBFBD>ս<EFBFBD><D5BD><EFBFBD> */
Status CreateBiThrTree(BiThrTree *T)
{
TElemType h;
scanf("%c",&h);
if(h==Nil)
*T=NULL;
else
{
*T=(BiThrTree)malloc(sizeof(BiThrNode));
if(!*T)
exit(OVERFLOW);
(*T)->data=h; /* <20><><EFBFBD>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD><><C7B0>) */
CreateBiThrTree(&(*T)->lchild); /* <20>ݹ鹹<DDB9><E9B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if((*T)->lchild) /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
(*T)->LTag=Link;
CreateBiThrTree(&(*T)->rchild); /* <20>ݹ鹹<DDB9><E9B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if((*T)->rchild) /* <20><><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD> */
(*T)->RTag=Link;
}
return OK;
}
BiThrTree pre; /* ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>,ʼ<><CABC>ָ<EFBFBD><D6B8><EFBFBD>ոշ<D5B8><D5B7>ʹ<EFBFBD><CAB9>Ľ<EFBFBD><C4BD><EFBFBD> */
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
void InThreading(BiThrTree p)
{
if(p)
{
InThreading(p->lchild); /* <20>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if(!p->lchild) /* û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
{
p->LTag=Thread; /* ǰ<><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
p->lchild=pre; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ָ<EFBFBD><D6B8>ǰ<EFBFBD><C7B0> */
}
if(!pre->rchild) /* ǰ<><C7B0>û<EFBFBD><C3BB><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD> */
{
pre->RTag=Thread; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
pre->rchild=p; /* ǰ<><C7B0><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>ָ<EFBFBD><D6B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>p) */
}
pre=p; /* <20><><EFBFBD><EFBFBD>preָ<65><D6B8>p<EFBFBD><70>ǰ<EFBFBD><C7B0> */
InThreading(p->rchild); /* <20>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
}
}
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Thrtָ<74><D6B8>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD> */
Status InOrderThreading(BiThrTree *Thrt,BiThrTree T)
{
*Thrt=(BiThrTree)malloc(sizeof(BiThrNode));
if(!*Thrt)
exit(OVERFLOW);
(*Thrt)->LTag=Link; /* <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD> */
(*Thrt)->RTag=Thread;
(*Thrt)->rchild=(*Thrt); /* <20><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ָ */
if(!T) /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ָ */
(*Thrt)->lchild=*Thrt;
else
{
(*Thrt)->lchild=T;
pre=(*Thrt);
InThreading(T); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
pre->rchild=*Thrt;
pre->RTag=Thread; /* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
(*Thrt)->rchild=pre;
}
return OK;
}
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T(ͷ<><CDB7><EFBFBD><EFBFBD>)<29>ķǵݹ<C7B5><DDB9>㷨 */
Status InOrderTraverse_Thr(BiThrTree T)
{
BiThrTree p;
p=T->lchild; /* pָ<70><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
while(p!=T)
{ /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,p==T */
while(p->LTag==Link)
p=p->lchild;
if(!visit(p->data)) /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>յĽ<D5B5><C4BD><EFBFBD> */
return ERROR;
while(p->RTag==Thread&&p->rchild!=T)
{
p=p->rchild;
visit(p->data); /* <20><><EFBFBD>ʺ<EFBFBD><CABA>̽<EFBFBD><CCBD><EFBFBD> */
}
p=p->rchild;
}
return OK;
}
int main()
{
BiThrTree H,T;
printf("<EFBFBD>밴ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>:'ABDH##I##EJ###CF##G##')\n");
CreateBiThrTree(&T); /* <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
InOrderThreading(&H,T); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n");
InOrderTraverse_Thr(H); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
printf("\n");
return 0;
}

View File

@@ -2,7 +2,7 @@
* @Author: Xu Bai
* @Date: 2019-07-23 22:43:14
* @LastEditors: Xu Bai
* @LastEditTime: 2019-07-27 23:26:33
* @LastEditTime: 2019-07-27 23:35:31
*/
#include "string.h"
#include "stdio.h"
@@ -40,7 +40,7 @@ Status visit(ElemType e)
return OK;
}
Status CreateBiThrTree(BiThrNode *T)
Status CreateBiThrTree(BiThrTree *T)
{
ElemType h;
scanf("%c", &h);
@@ -148,7 +148,7 @@ Status InOrderTraverse_Thr(BiThrTree T)
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>յĽ<D5B5><C4BD><EFBFBD> */
return ERROR;
}
while (p->RTag == Thread && p->rchid != T)
while (p->RTag == Thread && p->rchild != T)
{
p = p->rchild;
visit(p->data);
@@ -162,7 +162,7 @@ int main()
{
BiThrTree H, T;
printf("<EFBFBD>밴ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>:'ABDH##I##EJ###CF##G##')\n");
printf(":'ABDH##I##EJ###CF##G##')\n");
CreateBiThrTree(&T); /* <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
InOrderThreading(&H, T); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n");

BIN
a.out Normal file

Binary file not shown.