实验五 树和二叉树

来源:互联网 发布:矩形螺纹编程样板 编辑:程序博客网 时间:2024/05/16 05:29

设计一个二叉树,深度最少为4,请递归算法分别用前序、中序、后序遍历输出树结点。


#ifndef bitree_H#define bitree_H struct 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#include<iostream>using namespace std;#include "bitree.h"binode *bitree::creat(binode *bt){char ch;cout<<"请输入创建一棵二叉树的结点数据"<<endl;cin>>ch;if(ch=='#')bt=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<<" ";}}#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
原创粉丝点击