두 갈래 나무의 역행 (코드 구현)

1584 단어
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<iostream>
using namespace std;
typedef char DataType;
typedef struct  node // ( )
{
    DataType data;
    struct node *lchild,*rchild;
}BitreeNode;
BitreeNode *CreatBitree()// 
{
    char ch;
    scanf("%c",&ch);
    BitreeNode* T=NULL;
    if(ch!=' ') // 
    {
        T=(BitreeNode*)malloc(sizeof(BitreeNode));// 
        T->data=ch;
        T->lchild=CreatBitree();
        T->rchild=CreatBitree();
    }
    return T;
}
void Preorder( BitreeNode *p)// 
{
    if(p!=NULL)              // , 
    {
        printf("%c",p->data);   // , 
        Preorder(p->lchild);    // , 
        Preorder(p->rchild);    // , 
    }
}
void Inoder( BitreeNode *p)  // 
{
    if(p!=NULL)
    {
        Inoder(p->lchild);
        printf("%c",p->data);
        Inoder(p->rchild);
    }
}
void Postorder( BitreeNode *p) // 
{
    if(p!=NULL)
    {
        Postorder(p->lchild);
        Postorder(p->rchild);
        printf("%c",p->data);
    }
}
void DeleteTree( BitreeNode *p) // 
{
    if(p!=NULL)
    {
        DeleteTree(p->lchild);
        DeleteTree(p->rchild);
        free(p);               // 
    }
}
int main()
{
    BitreeNode *T=NULL;
    printf(" 
"); T=CreatBitree(); printf("

"); Preorder(T); printf("

"); Inoder(T); printf("

"); Postorder(T); DeleteTree(T); return 0; }

좋은 웹페이지 즐겨찾기