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树的平衡性很好,几乎达到完全二叉树的效果


浙公网安备 33010602011771号