데이터 구조 트 리 계층 은 이 진 트 리 C 언어 판 을 옮 겨 다 닌 다.
2642 단어 데이터 구조
//
#include
#include
typedef struct NNode
{
char data;
struct NNode *LChild;
struct NNode *RChild;
} BiTNode,*BiTree; //
typedef BiTree QueueElementType;
typedef struct Node
{
QueueElementType data;
struct Node *next;
} LinkQueueNode; //
typedef struct
{
LinkQueueNode *front; //
LinkQueueNode *rear; //
} LinkQueue; //
int InitQueue(LinkQueue *Q ) //
{
Q->front=(LinkQueueNode * )malloc(sizeof(LinkQueueNode));
if(Q->front != NULL)
{
Q->rear=Q->front;
Q->front->next=NULL;
return 1;
}
else return 0;//
}
int EnterQueue(LinkQueue *Q,QueueElementType x) // x
{
LinkQueueNode * newnode;
newnode=(LinkQueueNode *) malloc(sizeof(LinkQueueNode));
if(newnode != NULL)
{
newnode->data=x;
newnode->next=NULL;
Q->rear->next=newnode;
Q->rear=newnode;
return 1;
}
else return 0;
}
int DeleteQueue(LinkQueue *Q,QueueElementType *x ) //
{
LinkQueueNode *p;
if(Q->front==Q->rear)
return 0;
p=Q->front->next;
Q->front->next=p->next;
if(Q->rear==p )
Q->rear=Q->front; // p ,
*x=p->data;
free(p);
return 1;
}
int IsEmpty(LinkQueue *Q) // 1 0
{
if(Q->front==Q->rear ) return 1;
else return 0;
}
void CreateBiTree(BiTree *bt) //
{
char ch;
ch=getchar();
if(ch=='.') (*bt)=NULL;
else
{
*bt=(BiTree)malloc(sizeof(BiTNode));
(*bt)->data=ch;
CreateBiTree(&((*bt)->LChild));
CreateBiTree(&((*bt)->RChild));
}
}
void PreOrder(BiTree root) //
{
if(root!=NULL)
{
printf("%c",root->data);
PreOrder(root->LChild);
PreOrder(root->RChild);
}
}
int LayerOrder(BiTree bt) // 1 0
{
LinkQueue Q;
BiTree p;
InitQueue(&Q);
if(bt==NULL) return 0;
EnterQueue(&Q,bt);
while(!IsEmpty(&Q))
{
if(DeleteQueue(&Q,&p));
printf("%c ",p->data);
if(p->LChild) EnterQueue(&Q,p->LChild);
if(p->RChild) EnterQueue(&Q,p->RChild);
}
return 1;
}
int main()
{
BiTree bt;
printf(" AB..CD...
") ;
CreateBiTree(&bt);
PreOrder(bt);
printf("
");
if(LayerOrder(bt)) printf("
");
else printf("
");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.