描述
要求:
1.采用二叉链表的方式进行存储
2.构造一个二叉树类
实现以下算法:
1.创建二叉树
2.对二叉树进行前序、中序、后序遍历
输入
扩展的前序序列.在一棵树处理结束后,根据响应判断是否处理下一棵树
输出
前序、中序、后序
代码:
#include<iostream> using namespace std; struct BiNode { char data; BiNode *rchild; BiNode *lchild; }; class BiTree { public: BiTree(){root=create();} ~BiTree(){release(root);} void preorder(){preorder(root);} //前序遍历 void inorder(){inorder(root);}//中序遍历 void postorder(){postorder(root);}//后序遍历 private: BiNode *root; BiNode *create();//方便调用root void release(BiNode *bt); void preorder(BiNode *bt); void inorder(BiNode *bt); void postorder(BiNode *bt); }; BiNode *BiTree::create() { BiNode *bt; char a; cin>>a; if(a=='#') bt=NULL; else { bt=new BiNode; bt->data=a; bt->lchild=create(); bt->rchild=create(); } return bt; } void BiTree::release(BiNode *bt) { if(bt==NULL) return; else { release(bt->rchild); release(bt->lchild); 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; } }
int main() { string s; while(1) { BiTree t; cin>>s; t.preorder(); cout<<endl; t.inorder(); cout<<endl; t.postorder(); cout<<endl; if(s=="N") break; } return 0; }