AVL树(三)

下面用一个例子来测试AVL树的平衡性

随机的反复插入和删除树中的节点,如代码所示:

#include <iostream>
#include "AVL.h"
#include "IntClass.h"
#include <time.h>
#include <stdlib.h> 
#include "StringClass.h"
using namespace std;
int main()
{
BSTree bstree;
BSTree bstreeStr;

int max=50;
srand(unsigned(time(0)));

for(int j=0;j<50;j++)
{
	int number=rand()%7;
	for(int i=number;i>0;i--)
	{
		int a=rand()%max;
		bstree.insert(new IntClass(a),new StringClass("Tao",3));
	}
	for(int i=number;i>0;i--)
	{
		int a=rand()%max;
		bstree.remove(new IntClass(a));
	}
}
bstree.outPut();
cout<<"------------------------------------------------"<<endl;
bstreeStr.insert(new StringClass("Jim",3),new StringClass("Hello, I'm a student",20));
bstreeStr.insert(new StringClass("Lucy",4),new StringClass("Hello, I'm a teacher",20));
bstreeStr.insert(new StringClass("Brown",5),new StringClass("Hello, I'm a doctor",19));
bstreeStr.insert(new StringClass("Lily",4),new StringClass("Hello, I'm a actor",18));
bstreeStr.insert(new StringClass("Tao",3),new StringClass("Hello, I'm a student",20));
bstreeStr.insert(new StringClass("Peter",5),new StringClass("Hello, I'm a teacher",20));
bstreeStr.insert(new StringClass("John",4),new StringClass("Hello, I'm a doctor",19));
bstreeStr.insert(new StringClass("Tony",4),new StringClass("Hello, I'm a actor",18));
bstreeStr.insert(new StringClass("Linda",5),new StringClass("Hello, I'm a student",20));
bstreeStr.insert(new StringClass("Jurcy",5),new StringClass("Hello, I'm a teacher",20));
bstreeStr.insert(new StringClass("Chern",5),new StringClass("Hello, I'm a doctor",19));
bstreeStr.outPut();
cout<<"-------------------------------------------------"<<endl;
return 0;
}

结果如下图,可见AVL树的平衡性很好,几乎达到完全二叉树的效果

AVL

posted @ 2011-10-04 20:43  哈哈开心  阅读(779)  评论(0)    收藏  举报