资源简介
该程序通过C++实现了AVL树的一些基础操作:1.编写AVL树判别程序,并判别一个二叉搜索树是否为AVL树;2.实现AVL树的ADT,包括其上的基本操作:结点的加入和删除;3.实现基本操作的动态演示(图形演示);最重要的是,该程序可以画出你所输入的树
代码片段和文件信息
// BNode.cpp: implementation of the BNode class.
//
//////////////////////////////////////////////////////////////////////
#include “AVLDist.h“
void BTree::Initialize()
{
int value;
BNode * temp;
cout<<“请输入二叉搜索树先序序列(输入0结束):“< for(;;)
{
cin>>value;
if(!value)
break;
temp=new BNode(value);
MakeTree(temp);
}
}
BTree * BTree::MakeTree(BNode * v)
{
BNode *z=root *pz=0;
if(!root)
{
root=v;
count++;
return this;
}
else
{
while(z){
pz=z;
if(v->data < z->data) z=z->LiftNode;
else if(v->data > z->data) z=z->RightNode;
else cout<<“对不起,你所要输入的元素已存在!“< }
if(root){//树非空
if(v->data < pz->data) pz->LiftNode = v;
else pz->RightNode = v;}
}
return 0;
}
BNode * BTree::Search(int v)
{
BNode * temp=root;
queue tempQ;
for(;;)
{
if(temp->LiftNode)
tempQ.push(temp->LiftNode);
if(temp->RightNode)
tempQ.push(temp->RightNode);
if(temp->data==v)
return temp;
if(!tempQ.empty())
{
temp=tempQ.front();
tempQ.pop();
}
else
{
cout<<“没有该父节点。“< return 0;
}
}
}
int BTree::sHeight(BNode * node)
{
int h1=0h2=0;
if(!node->LiftNode&&!node->RightNode)
return 1;
else
{
if(node->LiftNode)
h1=sHeight(node->LiftNode);
if(node->RightNode)
h2=sHeight(node->RightNode);
if(h1>=h2)
return (h1+1);
else
return (h2+1);
}
}
void BTree::Dist(BNode * node)
{ //判断插入的二叉搜索树是否是AVL树
if(node->LiftNode)
Dist(node->LiftNode);//递归判断是否是AVL树
if(node->RightNode)
Dist(node->RightNode);
int h1=0h2=0bf;
if(node->LiftNode) h1=sHeight(node->LiftNode);//左右节点高度
if(node->RightNode) h2=sHeight(node->RightNode);
bf=h1-h2;
if(avlTree){
if(bf<-1 || bf>1) avlTree=false;
else avlTree=true;}
}
void BTree::Show()
{//画树
int tempC=SHeight();
queue tempQ;
BNode * temp=root;
cout<<“该树如下:“<
for(int j=tempC;j>0;j--)
{
for(int k=0;k<2*pow(2j-1);k++)
cout<<“ “;
for(int i=0;i {
if(temp)
temp->ShowNode();
else
cout<<“ “;
if(temp&&temp->LiftNode)
tempQ.push(temp->LiftNode);
else
tempQ.push(0);
if(temp&&temp->RightNode)
tempQ.push(temp->RightNode);
else
tempQ.push(0);
temp=tempQ.front();
tempQ.pop();
for(int k=0;k cout<<“ “;
}
cout< }
}
void BTree::preOrder(BNode * node)
{//前序
if(node)
{
Visit(node);
preOrder(node->LiftNode);
preOrder(node->RightNode);
}
}
void BTree::inOrder(BNode * node)
{//中序
if(node)
{
inOrder(node->LiftNode);
Visit(node);
inOrder(node->RightNode);
}
}
void BTree::postOrder(BNode * node)
{//后序
if(node)
{
postOrder(node->LiftNode);
postOrder(node->RightNode);
Visit(node);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-07-08 15:14 MyAVLTree7\
文件 4581 2014-04-02 13:52 MyAVLTree7\AVLDist.cpp
文件 1807 2014-04-02 13:50 MyAVLTree7\AVLDist.h
文件 8193 2014-04-02 13:53 MyAVLTree7\AVLTree.cpp
文件 1008 2014-04-02 13:50 MyAVLTree7\AVLTree.h
目录 0 2014-04-16 11:25 MyAVLTree7\Debug\
文件 292195 2014-04-02 13:53 MyAVLTree7\Debug\AVLDist.obj
文件 189249 2014-04-02 13:53 MyAVLTree7\Debug\AVLTree.obj
文件 263441 2014-04-16 11:25 MyAVLTree7\Debug\main.obj
文件 643180 2014-04-16 11:25 MyAVLTree7\Debug\MyAVLTree7.exe
文件 955576 2014-04-16 11:25 MyAVLTree7\Debug\MyAVLTree7.ilk
文件 3264004 2014-04-02 13:53 MyAVLTree7\Debug\MyAVLTree7.pch
文件 1426432 2014-04-16 11:25 MyAVLTree7\Debug\MyAVLTree7.pdb
文件 107520 2014-05-11 09:41 MyAVLTree7\Debug\vc60.idb
文件 143360 2014-04-16 11:25 MyAVLTree7\Debug\vc60.pdb
文件 2664 2014-04-04 19:35 MyAVLTree7\main.cpp
文件 4578 2014-04-02 13:52 MyAVLTree7\MyAVLTree7.dsp
文件 528 2014-04-02 13:48 MyAVLTree7\MyAVLTree7.dsw
文件 50176 2014-07-08 15:14 MyAVLTree7\MyAVLTree7.ncb
文件 49664 2014-07-08 15:14 MyAVLTree7\MyAVLTree7.opt
文件 254 2014-05-11 09:41 MyAVLTree7\MyAVLTree7.plg
相关资源
- k-means算法 基于c++语言实现
- netcdf 4.4.1 c/c++类库windows64位绿色版
- 轴承表面质量缺陷识别与统计系统
- 吉大中心校区校园导游系统
- VC++ MFC科学计算器,含代码和整个工程
- 图像去雾算法源代码c++
- VC++实现小波变换
- 基于混沌算法的图像加密系统C++源码
- C++写的连接SQL的学生成绩管理系统
- C++:The Core Language
- windows下获取CPU、BIOS、硬盘、MAC地址
- 计算机图形学 visual c++ 6.0 实时动画有
- 计算机图形学 visual c++ 6.0 三维变换有
- C++画图软件GUI
- C++MFC作业彩票机-模拟双色球
- C++实现的中文分词
- VC++实现简单的用户登录系统ADO。包括
- VC++实现简单的用户登录系统,包括修
- C++中文版手册 可直接开打查看
- 图书管理系统MFC版
- 西北工业大学C/C++程序设计大作业包含
- C++实现编译原理自动机、LL1文法、及
- Visual C++数据库编程技术与光盘
- C++实现A*算法十五数码问题
- 五子棋(C++Builder)
- gtest1.6.0.zip
- window开源asn.1
- gdal-1.9.2基于vs2010已编译好的c++
- 数据结构课程设计 职工管理系统 c语
- 完整的图书管理系统MFC编写
评论
共有 条评论