信阳医学院录取分数线:二叉查找树的查找、插入与删除操作。
来源:百度文库 编辑:神马品牌网 时间:2024/04/27 23:53:08
#include "BiSearchTree.h"
void main(void){
BiSearchTree<int>searchTree;
int a[]={18,14,24,5,16,20,38,7,30,10,35},n=11;
for(int i=0;i<n;i++)
searchTree.Insert(a[i]);
searchTree.PrintVTree();
cout<<endl;
cout<<"非递归前序遍历:"<<endl;
searchTree.PreOrder();
cout<<endl;
cout<<"非递归后序遍历:"<<endl;
searchTree.PostOrder();
cout<<endl;
cout<<" 删除24";
searchTree.Delete(a[2]);
searchTree.PrintVTree();
cout<<endl;
}
//BiSearchTree.h
#include "LinStack.h"
#include<math.h>
struct Info{
int xIndent;
int yLevel;
};
template<typename T>class BiSearchTree{
private:
BiTreeNode<T> *root;
void PreOrder(BiTreeNode<T> *&t);
void InOrder(BiTreeNode<T> *&t);
void PostOrder(BiTreeNode<T> *&t);
void Insert(BiTreeNode<T> *&ptr,const T &item);
void Delete(BiTreeNode<T> *&ptr,const T &item);
void PrintVTree(BiTreeNode<T> *&t);
public:
BiSearchTree():root(NULL){};
~BiSearchTree(){};
void PrintVTree(){PrintVTree(root);}
BiTreeNode<T> *&GetRoot(){return root;}
void PreOrder(){ PreOrder(root);}
void PostOrder(){ PostOrder(root);}
BiTreeNode<T> *&Find(const T &item);
void Insert(const T &item){
Insert(GetRoot(),item);}
void Delete(const T &item){
Delete(GetRoot(),item);}
};
template<typename T>void BiSearchTree<T>::PrintVTree(BiTreeNode<T> *&t){
int screenWidth=64;
int dataWidth=2;
LinQueue<Info> QI;
LinQueue<BiTreeNode<T>*> Q;
BiTreeNode<T> *p;
Info s,s1,s2;
int offset,level=-1,len,i;
Q.Insert(t);
s.xIndent=screenWidth/dataWidth;
s.yLevel=0;
QI.Insert(s);
while(!Q.Empty()&&!QI.Empty())
{
s2=s;
p=Q.Delete();
s=QI.Delete();
if(s.yLevel!=level){
cout<<"\n第"<<s.yLevel<<"层";
level=s.yLevel;
提供网站http://www.bc-cn.net/bbs/Article/20054/16/15813.html
如果有不会的可以问我,小弟对这个略知一,二.
去太平洋软件去看一下吧!!