데이터 구조 - 이 진 트 리 생 성 반복 출력

이 진 링크 노드 구조의 정 의 는 다음 과 같다.
typedef struct Node
{
    DateType data;//       
    struct Node *Lchild;//   
    struct Node *Rchild;//   
}BiTNode,*BiTree;

이 진 트 리 의 생 성 은 우리 가 사용 하 는 것 은 순서 서열 을 넓 히 고 이 진 트 리 를 만 드 는 기본 적 인 사 고 는 바로 1 이다. 키보드 에서 문 자 를 받 아 그 가 \ # 번호 가 맞 는 지 판단 하 는 것 이다.2. 그 다음 에 재 귀적 인 방법 으로 선착순 으로 좌우 아이들 의 지도 키보드 입력 빈 칸 을 계속 만 들 면 종료 코드 는 다음 과 같다.
BiTree Creat()
{
    char ch;
    BiTNode *S;
    ch = getchar();
    if(ch=='#')//     # 
    {
        return NULL;
    }
    S = (BiTNode *)malloc(sizeof(BiTNode));//     
    S->data = ch;//          
    S->Lchild = Creat();//       
    S->Rchild = Creat();//       
    return S;//   
}

우 리 는 세 가지 순서 로 나 뉘 었 다.왼쪽 아 이 는 옮 겨 다 니 고 나 서 야 오른쪽 아 이 를 옮 겨 다 니 기 시작 했다.
void PrintXX(BiTree S)
{
    if(S)//             
    {
        printf("%c ",S->data );//   
        PrintXX(S->Lchild);//       
        PrintXX(S->Rchild);//       
    }
}
void PrintZX(BiTree S)
{
    if(S)
    {
        PrintZX(S->Lchild);//          
        printf("%c ",S->data );
        PrintZX(S->Rchild);//       
    }
}

void PrintHX(BiTree S)
{
    if (S)
    {
        PrintHX(S->Lchild);//       
        PrintHX(S->Rchild);//            
        printf("%c ",S->data );
    }
}

이 진 트 리 는 트 리 모양 에 따라 출력 합 니 다.
void Print(BiTree S, int h)
{
    if(S)
    {
      Print(S->Rchild,h+1);
      for(int i = 0;i<h;i++)
        {
         printf(" ");
        }
      printf("%c
"
,S->data); Print(S->Lchild,h+1); } }

좋은 웹페이지 즐겨찾기