数据结构-树-二叉树类
来源:互联网 发布: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;}