AVL树测试程序

来源:互联网 发布:php 文章置顶 编辑:程序博客网 时间:2024/06/12 20:40

AVL树(三)

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include "AVL.h"
#include "IntClass.h"
#include <time.h>
#include <stdlib.h> 
#include "StringClass.h"
usingnamespace std;
int main()
{
BSTree bstree;
BSTree bstreeStr;
  
int max=50;
srand(unsigned(time(0)));
  
for(intj=0;j<50;j++)
{
    intnumber=rand()%7;
    for(inti=number;i>0;i--)
    {
        inta=rand()%max;
        bstree.insert(newIntClass(a),newStringClass("Tao",3));
    }
    for(inti=number;i>0;i--)
    {
        inta=rand()%max;
        bstree.remove(newIntClass(a));
    }
}
bstree.outPut();
cout<<"------------------------------------------------"<<endl;
bstreeStr.insert(newStringClass("Jim",3),newStringClass("Hello, I'm a student",20));
bstreeStr.insert(newStringClass("Lucy",4),newStringClass("Hello, I'm a teacher",20));
bstreeStr.insert(newStringClass("Brown",5),newStringClass("Hello, I'm a doctor",19));
bstreeStr.insert(newStringClass("Lily",4),newStringClass("Hello, I'm a actor",18));
bstreeStr.insert(newStringClass("Tao",3),newStringClass("Hello, I'm a student",20));
bstreeStr.insert(newStringClass("Peter",5),newStringClass("Hello, I'm a teacher",20));
bstreeStr.insert(newStringClass("John",4),newStringClass("Hello, I'm a doctor",19));
bstreeStr.insert(newStringClass("Tony",4),newStringClass("Hello, I'm a actor",18));
bstreeStr.insert(newStringClass("Linda",5),newStringClass("Hello, I'm a student",20));
bstreeStr.insert(newStringClass("Jurcy",5),newStringClass("Hello, I'm a teacher",20));
bstreeStr.insert(newStringClass("Chern",5),newStringClass("Hello, I'm a doctor",19));
bstreeStr.outPut();
cout<<"-------------------------------------------------"<<endl;
return0;
}

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

AVL



本文出自:http://www.cnblogs.com/xiao-cheng/archive/2011/10/04/2199092.html

原创粉丝点击