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

你可能感兴趣的:(树)