Skip to content

Commit 69e8b1d

Browse files
committed
head file of AVLtree
1 parent fffb8ba commit 69e8b1d

1 file changed

Lines changed: 72 additions & 0 deletions

File tree

Algorithm/AVLtree.h

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
#include<assert.h>
2+
#include<iostream>
3+
class AVL
4+
{
5+
struct treenode
6+
{
7+
treenode* left;
8+
treenode* right;
9+
int value;
10+
int height;
11+
treenode(int val, int h): left(nullptr), right(nullptr), value(val), height(h) {}
12+
void setleft(int val, int h)
13+
{
14+
this->left = new treenode(val, h);
15+
}
16+
void setright(int val, int h)
17+
{
18+
this->right = new treenode(val, h);
19+
}
20+
};
21+
public:
22+
AVL(): root(new treenode(0, 0)), nodecount(0) {};
23+
~AVL() {clearall(root);}
24+
25+
treenode* find(int val);
26+
void insert(int val)
27+
{
28+
inserthelp(root, val);
29+
nodecount++;
30+
}
31+
void remove(int val)
32+
{
33+
if (nodecount == 0) {
34+
std::cout << "can't find " << val << std::endl;
35+
return;
36+
}
37+
else {
38+
if (removehelp(root, val))
39+
nodecount--;
40+
}
41+
}
42+
void printbyorder()
43+
{
44+
std::cout << "printbyorder:";
45+
print(root);
46+
std::cout << std::endl;
47+
}
48+
int size()
49+
{
50+
return nodecount;
51+
}
52+
53+
private:
54+
treenode* root;
55+
int nodecount;
56+
int max(int a, int b)
57+
{
58+
return a > b ? a : b;
59+
}
60+
treenode* LLrotate(treenode* k1);
61+
treenode* LRrotate(treenode* k1);
62+
treenode* RRrotate(treenode* k1);
63+
treenode* RLrotate(treenode* k1);
64+
treenode* inserthelp(treenode*& node, int val);
65+
treenode* removehelp(treenode*& node, int val);
66+
void clearall(treenode* node);
67+
void print(treenode* node);
68+
int getheight(treenode* node)
69+
{
70+
return node == nullptr ? -1 : node->height;
71+
}
72+
};

0 commit comments

Comments
 (0)