二叉树实现实验

来源:互联网 发布:contabs.js插件 编辑:程序博客网 时间:2024/05/18 03:26
//Bitree.h#ifndef BiTree_H#define BiTree_Hstruct BiNode {char data;BiNode *lchild, *rchild;};class BiTree {public:BiTree(){root = Creat(root);}//   构造函数~BiTree(){Release(root);}   // 析构函数 void PreOrder(){PreOrder(root);}   // 先序遍历函数void InOrder(){InOrder(root);}  //  中序遍历函数void PostOrder(){PostOrder(root);}  // 后序遍历函数private:BiNode* root;BiNode* Creat(BiNode* bt);  //被调用的建树函数void Release(BiNode* bt);  // 被调用的析构函数void PreOrder(BiNode* bt);  // 被调用的先序遍历函数void InOrder(BiNode* bt);  // 被调用的中序遍历函数void PostOrder(BiNode* bt);  //  被调用的后序遍历函数};#endif//Bitree.cpp#include<iostream>using namespace std;#include "Bitree.h"BiNode* BiTree::Creat(BiNode* bt){  //  递归 建树char ch;cout << "请输入创建一棵二叉树的节点数据" << endl;cin >> ch;if(ch=='#') return NULL;else {bt = new BiNode;  //新建一个节点bt->data = ch;bt->lchild = Creat(bt->lchild);bt->rchild = Creat(bt->rchild);}return bt;}void BiTree::Release(BiNode* bt){   //递归删除节点if(bt != NULL) {Release(bt->lchild);Release(bt->rchild);delete bt;}}void BiTree::PreOrder(BiNode* bt) {  //先访问根结点然后访问左右子节点  递归形式 if(bt == NULL) return ;else {cout << bt->data << " ";PreOrder(bt->lchild);PreOrder(bt->rchild);}}void BiTree::InOrder(BiNode* bt){   //先访问左子节点然后访问根结点  最后访问右子节点   递归形式if(bt == NULL) return ;else {InOrder(bt->lchild);cout << bt->data << " ";InOrder(bt->rchild);}}void BiTree::PostOrder(BiNode* bt) {  // 先访问左右儿子节点 最后访问根节点   递归形式 if(bt == NULL) return ;else {PostOrder(bt->lchild);PostOrder(bt->rchild);cout << bt->data << " ";}}//Bitree_main.cpp#include<iostream>using namespace std;#include "Bitree.h"int main() {BiTree T;cout << "---前序遍历---" << endl;T.PreOrder();cout << endl;cout << "---中序遍历---" << endl;T.InOrder();cout << endl;cout << "---后序遍历---" << endl;T.PostOrder();cout << endl;return 0;}

0 0
原创粉丝点击