【BUCT数据结构类库】5.3--程序题--二叉树建立算法实现

#include <stdio.h>
#include <iostream>
using namespace std;
#define ElemType char

//节点声明,数据域、左孩子指针、右孩子指针

typedef struct BiTNode{

    char data;

    struct BiTNode *lchild,*rchild;

}BiTNode,*BiTree;

//先序建立二叉树

BiTree CreateBiTree(){

    char ch;

    BiTree T;

    scanf("%c",&ch);
    if(ch=='-')  return NULL; 

    if(ch=='#')  T=NULL;

    else{

        T = new BiTNode;

        T->data = ch;

        T->lchild = CreateBiTree();

        T->rchild = CreateBiTree();

    }

    return T;//返回根节点

}

//先序遍历二叉树

void PreOrderTraverse(BiTree T){

    if(T){

       printf("%c",T->data);

       PreOrderTraverse(T->lchild);

       PreOrderTraverse(T->rchild);

    }

}

 

//中序遍历

void InOrderTraverse(BiTree T){

   if(T){

     InOrderTraverse(T->lchild);

     printf("%c",T->data);

     InOrderTraverse(T->rchild);

    }

}

//后序遍历

void PostOrderTraverse(BiTree T){

   if(T){

     PostOrderTraverse(T->lchild);

     PostOrderTraverse(T->rchild);

     printf("%c",T->data);

    }

}


int main(){

    BiTree T;
    cout<<"请输入二叉树的前序遍历序列,以“-”结束:"<<endl;
    cout<<"eg:ABDH##I##E##CF#J##G##-"<<endl;
    T = CreateBiTree();//建立
    cout<<"先序遍历二叉树:"<<endl;
    PreOrderTraverse(T);//输出
    cout<<endl;
    cout<<"中序遍历二叉树:"<<endl;
    InOrderTraverse(T);
    cout<<endl;
    cout<<"后序遍历二叉树:"<<endl;
    PostOrderTraverse(T);
    cout<<endl;
    return 0;
}

output

 左图和测试用例来源:二叉树的建立方法总结 - llhthinker - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半山乱步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值