二叉树的建立及遍历

#include<iostream>  
using namespace std;  

typedef struct node  
{  
    struct node *lchild;  
    struct node *rchild;  
    char data;  
}BiTreeNode, *BiTree;  
BiTree T;
void createBiTree(BiTree &T)  
{  
    char c;  
    cin >> c;  
    if('#' == c)  
        T = NULL;  
    else  
    {  
        T = new BiTreeNode;  
        T->data = c;  
        createBiTree(T->lchild);  
        createBiTree(T->rchild);  
    }  
}  
void pre(BiTree T)
{
    if(T)
    {
        printf("%c ",T->data);
        pre(T->lchild);
        pre(T->rchild);
    }
}

void center(BiTree T)
{
    if(T)
    {
        center(T->lchild);
        printf("%c ",T->data);
        center(T->rchild);
    }   
}

void after(BiTree T)
{
    if(T)
    {
    after(T->lchild);
    after(T->rchild);
        printf("%c ",T->data);

    }   
}

void ShowTraverseResult()//显示遍历结果
{
    printf("先序遍历结果:");
    pre(T);
    printf("\n\n");
    printf("中序遍历结果:");
    center(T);
    printf("\n\n");
    printf("后序遍历结果:");
    after(T);
    printf("\n");
}
int main()  
{  

    createBiTree(T);  
    ShowTraverseResult();
    return 0;  
}  
posted @ 2017-05-25 21:12  云胡同学  阅读(82)  评论(0编辑  收藏  举报