두 갈래 나무 중의 세 가지 역행 방식

2343 단어
두 갈래 나무의 경우:
몇 가지 반복 방식
 
1. 선행 반복: 선행 반복은 루트 노드를 출력한 다음에 왼쪽 트리를 출력하고 마지막으로 오른쪽 트리를 출력합니다.위의 그림은 ABCDEF의 순서대로 표시됩니다.
2. 중차 반복: 중차 반복은 왼쪽 트리를 출력하고 루트 노드를 출력하며 마지막으로 오른쪽 트리를 출력합니다.위 그림의 중간 순서 반복 결과: CBDAEF
3. 뒷차례 반복: 뒷차례 반복은 왼쪽 트리를 출력하고 오른쪽 트리를 출력하며 뿌리 노드를 출력합니다.위 그림의 뒷면 순서는 다음과 같습니다. CDBFEA
#include 
#include 
typedef char TelemType;
 
 
 
 
typedef struct TNode{
    TelemType data;
    struct TNode *lchild,*rchild;
} BitNode;
// 
BitNode* createTree(void);
void preOrderTraverse(BitNode *);
void inOrderTraverse(BitNode *);
void lastOrderTraverse(BitNode *);
 
 
 
 
int main(int agrc,char *argv[]){
    BitNode *root=NULL;
    root=createTree();  
    printf("
:");     preOrderTraverse(root);     printf("
:");     inOrderTraverse(root);     printf("
:");     lastOrderTraverse(root);           return 0; }         // BitNode* createTree(void){     BitNode *b;     TelemType ch;     scanf("%c",&ch);     if(ch=='#'){         b=NULL;     }else{         b=(BitNode *)malloc(sizeof(BitNode));         b->data=ch;         b->lchild=createTree();         b->rchild=createTree();     }             return b; }         // void preOrderTraverse(BitNode *root){     if(root){         printf("%c",root->data);         preOrderTraverse(root->lchild);              preOrderTraverse(root->rchild);          } }         // void inOrderTraverse(BitNode *root){     if(root){         inOrderTraverse(root->lchild);         printf("%c",root->data);         inOrderTraverse(root->rchild);     } }         // void lastOrderTraverse(BitNode *root){     if(root){         lastOrderTraverse(root->lchild);         lastOrderTraverse(root->rchild);         printf("%c",root->data);     } }

좋은 웹페이지 즐겨찾기