二叉树的建立与先序、中序、后序遍历

#include <iostream>
#include <stdio.h>
#include <malloc.h>
using namespace std;

typedef struct TreeNode
{
    char data;
    struct TreeNode *left,*right;
}*pNode,Node;

void CreateTree(pNode &T);  ///此处应该用指针的引用
void PreOrderTraverse(pNode &T);
void InOrderTraverse(pNode &T);
void PostOrderTraverse(pNode &T);

int main()
{
    pNode T=NULL;
    printf("输入A~Z建立二叉树,#代表空\n");
    CreateTree(T);
    printf("先序遍历结果为:");
    PreOrderTraverse(T);
    printf("\n");
    printf("中序遍历结果为:");
    InOrderTraverse(T);
    printf("\n");
    printf("后序遍历结果为:");
    PostOrderTraverse(T);
    printf("\n");
}

void CreateTree(pNode &T)
{
    char ch;
    if((ch=getchar())=='#') T=NULL;
    else{
        T=(pNode)malloc(sizeof(Node));
        T->data=ch;
        CreateTree(T->left);
        CreateTree(T->right);
    }
}

void PreOrderTraverse(pNode &T)
{
    if(T){
        printf("%c",(T)->data);
        PreOrderTraverse(T->left);
        PreOrderTraverse(T->right);
    }
}

void InOrderTraverse(pNode &T)
{
    if(T){
        InOrderTraverse(T->left);
        printf("%c",T->data);
        InOrderTraverse(T->right);
    }
}

void PostOrderTraverse(pNode &T)
{
    if(T){
        PostOrderTraverse(T->left);
        PostOrderTraverse(T->right);
        printf("%c",T->data);
    }
}

猜你喜欢

转载自www.cnblogs.com/ACPIE-liusiqi/p/9052456.html
今日推荐