-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAVLTree.hpp
87 lines (70 loc) · 1.92 KB
/
AVLTree.hpp
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#pragma once
#ifndef AVLTREE_H
#define AVLTREE_H
/// @brief Óçåë ÀÂË äåðåâà.
struct AVLNode
{
int Key;
size_t Height = 1;
AVLNode* Left = nullptr;
AVLNode* Right = nullptr;
};
/// @brief ÀÂË äåðåâî.
struct AVLtree
{
AVLNode* RootNode;
};
/// @brief Èíèöèàëèçàöèÿ äåðåâà.
/// @param tree Äåðåâî.
void InitializeTree(AVLtree*& tree);
/// @brief Ïîëó÷åíèå âûñîòû.
/// @param treeNode Óçåë.
/// @return Âûñîòà.
size_t GetHeight(AVLNode* treeNode);
/// @brief Ïîëó÷åíèå ôàêòîðà áàëàíñà.
/// âûñîòà ïðàâîãî ìèíóñ âûñîòà ëåâîãî.
/// @param treeNode Óçåë.
/// @return Ôàêòîð áàëàíñà.
int GetBalanceFactor(AVLNode* treeNode);
/// @brief Âîññòàíîâëåíèå êîððåêòíîãî çíà÷åíèå âûñîòû.
/// @param treeNode Óçåë.
void FixHeight(AVLNode* treeNode);
/// @brief Ëåâûé ïîâîðîò âîêðóã treeNode.
/// @param treeNode Óçåë.
/// @return Íîâûé Êîðåíü.
AVLNode* RotateLeft(AVLNode* treeNode);
/// @brief Ïðàâûé ïîâîðîò âîêðóã treeNode.
/// @param treeNode Óçåë.
/// @return Íîâûé Êîðåíü.
AVLNode* RotateRight(AVLNode* treeNode);
/// @brief Áàëàíñèðîâêà
/// @param treeNode Óçåë.
/// @return Íîâûé Êîðåíü.
AVLNode* Balance(AVLNode* treeNode);
/// @brief Âñòàâêà.
/// @param treeNode Óçåë.
/// @param key Çíà÷åíèå.
/// @return Íîâûé Êîðåíü.
AVLNode* Insert(AVLNode* treeNode, int key);
/// @brief Ïîèñê ìèíèìóìà.
/// @param treeNode Óçåë.
/// @return Íîâûé Êîðåíü.
AVLNode* FindMinimal(AVLNode* treeNode);
/// @brief Óäàëåíèå ìèíèìàëüíîãî ýëåìåíòà.
/// @param treeNode Óçåë.
/// @return Íîâûé Êîðåíü.
AVLNode* RemoveMinimal(AVLNode* treeNode);
/// @brief Óäàëåíèå.
/// @param treeNode Óçåë.
/// @param key Çíà÷åíèå.
/// @return Íîâûé Êîðåíü.
AVLNode* Remove(AVLNode* treeNode, int key);
/// @brief Ïîèñê.
/// @param treeNode Óçåë.
/// @param key Çíà÷åíèå.
/// @return Óçåë ñî çíà÷åíèåì key.
AVLNode* Find(AVLNode* treeNode, int key);
/// @brief Óäàëåíèå äåðåâà.
/// @param treeNode Óçåë êîðíÿ.
void FreeTree(AVLNode* treeNode);
#endif //AVLTREE_H