数据结构-树-二叉树类

来源:互联网 发布:memcache java 教程 编辑:程序博客网 时间:2024/06/16 22:06
#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;/* * */class Btree{    typedef struct  tNode    {        char data;        tNode *l,*r;    }tNode;    private:        tNode *root;    public:        Btree(){root = NULL;}        ~Btree(){}        void initTree();        void Create_Tree(tNode **node);        void traverse();        //先序遍历        void Pre_Tra(tNode *node);        //中序遍历        void Mid_Tra(tNode *node);        //后续遍历        void Bac_Tra(tNode *node);    /* data */};void Btree::initTree(){    Create_Tree(&root);}void Btree::Create_Tree(tNode **node){    (*node) = new tNode;    scanf("%c",&((*node)->data));    (*node)->l = NULL;    (*node)->r = NULL;    if((*node)->data == '#')return ;    else    {        Create_Tree(&((*node)->l));        Create_Tree(&((*node)->r));    }}void Btree::traverse(){    cout<<"print Tree:"<<endl;    Pre_Tra(root);    cout<<endl;    Mid_Tra(root);    cout<<endl;    Bac_Tra(root);    cout<<endl;}void Btree::Pre_Tra(tNode *node){    if(node->data == '#') return;    else    {        printf("%c",node->data);        Pre_Tra(node->l);        Pre_Tra(node->r);    }}void Btree::Mid_Tra(tNode *node){    if(node->data == '#') return;    else    {        Pre_Tra(node->l);        printf("%c",node->data);        Pre_Tra(node->r);    }}void Btree::Bac_Tra(tNode *node){    if(node->data == '#') return;    else    {        Pre_Tra(node->l);        Pre_Tra(node->r);        printf("%c",node->data);    }}int main(int argc, char const *argv[]){    Btree btree;    btree.initTree();    btree.traverse();    return 0;}