데이터 구조 - 단서 이 진 트 리 의 기본 동작
#include
#include
typedef struct Node{ //
char data;
struct Node *Lchild;
struct Node *Rchild;
int Ltag;
int Rtag;
}BiTNode,*BiTree;
void CreateBiTree(BiTree *root){ // ,
char ch;
ch=getchar();
if(ch=='#') *root=NULL;
else{
*root=(BiTree)malloc(sizeof(BiTree));
(*root)->data=ch;
CreateBiTree(&((*root)->Lchild));
CreateBiTree(&((*root)->Rchild));
}
}
void Visit(char data){
printf("%c",data);
}
void InOrder(BiTree T){ //
if(T){
InOrder(T->Lchild);
Visit(T->data);
InOrder(T->Rchild);
}
}
BiTree pre = NULL; // ,pre
void Inthread(BiTree T){ // ( )
if(T!=NULL){
Inthread(T->Lchild); //
if(T->Lchild==NULL){ // ,
T->Lchild=pre;
T->Ltag=1;
}
if(pre!=NULL&&pre->Rchild==NULL){ // ,
pre->Rchild=T;
pre->Rtag=1;
}
pre=T;
Inthread(T->Rchild); //
}
}
BiTree InPre(BiTree T){ //
BiTree Pre;
if(T->Ltag==1) Pre=T->Lchild; //
else{
for(BiTree q=T->Lchild;q->Rtag==0;q=q->Rchild) // T
Pre=q;
}
return (Pre);
}
BiTree InNext(BiTree T){ //
BiTree Next;
if(T->Rtag==1) Next=T->Rchild; //
else{
for(BiTree q=T->Rchild;q->Ltag==0;q=q->Lchild) // T
Next=q;
}
return (Next);
}
BiTree InFirst(BiTree T){ //
BiTree p=T;
if(p==NULL) return (NULL);
while(p->Ltag==0) p=p->Lchild;
return p;
}
void TiOrder(BiTree T){ //
BiTree p;
p=InFirst(T);
while(p!=NULL){
Visit(p->data);
p=InNext(p);
}
}
int main(){
BiTree T;
CreateBiTree(&T);
InOrder(T);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.