⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a.c

📁 二叉查找树的创建、查找、插入和删除 问题描述:运行时产生若干个随机整数
💻 C
字号:
#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;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -