C 언어 이 진 트 리 의 구축 과 옮 겨 다 니 기 에 대해 자세히 알 아 보기
코드:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* */
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree T=NULL;
/* */
void Create (BiTree *T) //
{
char ch;
scanf("%c",&ch);
if(ch=='#')
*T=NULL;
else
{
*T=(BiTree)malloc(sizeof(BiTNode));
if(!*T)
return ;
else
{
(*T)->data=ch;
Create(&(*T)->lchild);
Create(&(*T)->rchild);
}
}
}
/* */
void PreOrderTraverse(BiTree T)
{
if(T==NULL)
return ;
printf("%c ",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
/* */
void InOrderTraverse(BiTree T)
{
if(T==NULL)
return ;
InOrderTraverse(T->lchild);
printf("%c ",T->data);
InOrderTraverse(T->rchild);
}
/* */
void PostOrderTraverse(BiTree T)
{
if(T==NULL)
return ;
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c ",T->data);
}
int main()
{
printf(" , :ABDH#K###E##CFI###G#J##
");
Create(&T);
printf(" :
");
PreOrderTraverse(T);
printf("
");
printf(" :
");
InOrderTraverse(T);
printf("
");
printf(" :
");
PostOrderTraverse(T);
printf("
");
return 0;
}
출력 결 과 는 다음 과 같다.PS:다음은 C++의 인용 으로 2 단계 지침 을 대체 한 것 입 니 다.
#include<bits/stdc++.h>
using namespace std;
/* */
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree T=NULL;
/* */
void Create (BiTree &T) // C++
{
char ch;
scanf("%c",&ch);
if(ch=='#')
T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
if(!T)
return ;
else
{
T->data=ch;
Create(T->lchild);
Create(T->rchild);
}
}
}
/* */
void PreOrderTraverse(BiTree T)
{
if(T==NULL)
return ;
printf("%c ",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
/* */
void InOrderTraverse(BiTree T)
{
if(T==NULL)
return ;
InOrderTraverse(T->lchild);
printf("%c ",T->data);
InOrderTraverse(T->rchild);
}
/* */
void PostOrderTraverse(BiTree T)
{
if(T==NULL)
return ;
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c ",T->data);
}
int main()
{
printf(" , :ABDH#K###E##CFI###G#J##
");
Create(T);
printf(" :
");
PreOrderTraverse(T);
printf("
");
printf(" :
");
InOrderTraverse(T);
printf("
");
printf(" :
");
PostOrderTraverse(T);
printf("
");
return 0;
}
PS:옮 겨 다 니 는 PLus 버 전,원 하 는 것 은 스스로 가 져 옵 니 다.
#include <iostream>
#include <queue>
#include <stack>
#include <cstdio>
#include <cstdlib>
using namespace std;
const int cmax=1e2+5;
typedef struct BiTNode
{
char data;
struct BiTNode *lchild ,*rchild;
}BiTNode,*BiTree;
void CreateBiTree (BiTree &T)
{
char ch;
scanf("%c",&ch);
if(ch=='#')
T=NULL;
else
{
T=(BiTNode *)malloc(sizeof(BiTNode));
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return ;
}
void PreOrder(BiTree T)
{
if(T)
{
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BiTree T)
{
if(T)
{
InOrder(T->lchild);
printf("%c",T->data);
InOrder(T->rchild);
}
}
void PostOrder(BiTree T)
{
if(T)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c",T->data);
}
}
//
void InOrderTraverse(BiTree T)
{
stack<BiTree> S;
BiTree p;
S.push(T);
while(!S.empty())
{
p=new BiTNode;
while((p=S.top())&&p)
S.push(p->lchild);
S.pop();
if(!S.empty())
{
p=S.top();
S.pop();
cout<<p->data<<" ";
S.push(p->rchild);
}
}
}
//
void PreOrder_Nonrecursive(BiTree T)
{
stack<BiTree> S;
BiTree p;
S.push(T);
while(!S.empty())
{
while((p=S.top())&&p)
{
cout<<p->data<<" ";
S.push(p->lchild);
}
S.pop();
if(!S.empty())
{
p=S.top();
S.pop();
S.push(p->rchild);
}
}
}
int visit(BiTree T)
{
if(T)
{
printf("%c ",T->data);
return 1;
}
else
return 0;
}
//
void LeverTraverse(BiTree T)
{
queue <BiTree> Q;
BiTree p;
p=T;
if(visit(p)==1)
Q.push(p);
while(!Q.empty())
{
p=Q.front();
Q.pop();
if(visit(p->lchild)==1)
Q.push(p->lchild);
if(visit(p->rchild)==1)
Q.push(p->rchild);
}
}
//
int main()
{
BiTree T;
char j;
int flag=1;
printf(" 。
");
printf(" # 。
");
printf(" , 、 、 , 、 。
");
printf(" 。
");
printf(" 。
");
printf(" :1 2 3 4 5 6 ( )
");
CreateBiTree(T); //
getchar();
printf("
");
printf(" :
");
printf("1.
");
printf("2.
");
printf("3.
");
printf("4.
");
printf("5.
");
printf("6.
");
printf("0.
");
while(flag)
{
scanf(" %c",&j);
switch(j)
{
case '1':if(T)
{
printf(" :");
PreOrder(T);
printf("
");
}
else printf(" !
");
break;
case '2':if(T)
{
printf(" :");
InOrder(T);
printf("
");
}
else printf(" !
");
break;
case '3':if(T)
{
printf(" :");
PostOrder(T);
printf("
");
}
else printf(" !
");
break;
case '4':if(T)
{
printf(" :");
InOrderTraverse(T);
printf("
");
}
else printf(" !
");
break;
case '5':if(T)
{
printf(" :");
PreOrder_Nonrecursive(T);
printf("
");
}
else printf(" !
");
break;
case '6':if(T)
{
printf(" :");
LeverTraverse(T);
printf("
");
}
else printf(" !
");
break;
default:flag=0;printf(" , !
");
}
}
}
총결산
이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 실 수 있 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.