이 진 트 리 의 기본 동작 (재 귀적)

#include <stdio.h>
#include <stdlib.h>

typedef struct node{
    char data;
    node * lchild;
    node * rchild;
}BTree;

BTree * create(BTree * p){
    char ch;
    scanf("%c",&ch);
    if(ch != ' '){
        p = (BTree *)malloc(sizeof(BTree));
        p->data = ch;
        p->lchild = create(p->lchild);
        p->rchild = create(p->rchild);
        return p;
    }else{
        return NULL;
    }
}

void preorder(BTree * p){
    if(p != NULL){
        printf("%4c",p->data);
        preorder(p->lchild);
        preorder(p->rchild);
    }   
}

void inorder(BTree * p){
    if(p != NULL){
        inorder(p->lchild);
        printf("%4c",p->data);
        inorder(p->rchild);
    }   
}

void postorder(BTree * p){
    if(p != NULL){
        postorder(p->lchild);
        postorder(p->rchild);
        printf("%4c",p->data);
    }   
}

int main(){
    BTree * p;
    p = create(p);
    printf("preorder:
"
); preorder(p); printf("
"
); printf("inorder:
"
); inorder(p); printf("
"
); printf("postorder:
"
); postorder(p); printf("
"
); return 0; }

좋은 웹페이지 즐겨찾기