Skip to content

Commit ecaa473

Browse files
ClémentClément
authored andcommitted
Adding missing example.
1 parent f40e2ab commit ecaa473

2 files changed

Lines changed: 64 additions & 1 deletion

File tree

source/code/projects/AVLTree/AVLTree/AVLTree.cs

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,53 @@ private int GetHeight(Node nodeP)
5353
else
5454
return nodeP.Height;
5555
}
56-
56+
// We have a method to update the height
57+
// of a node, and of its sub-trees.
58+
private int UpdateHeight(Node nodeP)
59+
{
60+
int height = -1;
61+
if (nodeP != null)
62+
{
63+
int nodeLeft = UpdateHeight(nodeP.left);
64+
int nodeRight = UpdateHeight(nodeP.right);
65+
height = Math.Max(nodeLeft, nodeRight) + 1;
66+
nodeP.Height = height;
67+
}
68+
return height;
69+
}
70+
71+
//
72+
private int SubtreeBalance(Node nodeP)
73+
{
74+
// Will return
75+
// a negative number if subtree is right-heavy
76+
// a positive number if subtree is left-heavy
77+
// 0 if the subtree is perfectly balanced.
78+
UpdateHeight(nodeP.left);
79+
UpdateHeight(nodeP.right);
80+
int balance;
81+
if (nodeP == null)
82+
{
83+
balance = 0;
84+
}
85+
else if (nodeP.left == null && nodeP.right == null)
86+
{
87+
balance = 0;
88+
}
89+
else if (nodeP.left == null)
90+
{
91+
balance = -(nodeP.right.Height + 1); // right side heavy represented by negative number
92+
}
93+
else if (nodeP.right == null)
94+
{
95+
balance = nodeP.left.Height + 1;
96+
}
97+
else
98+
{
99+
balance = nodeP.left.Height - nodeP.right.Height;
100+
}
101+
return balance;
102+
}
57103
public void Insert(T valueP)
58104
{
59105
root = Insert(valueP, root);
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
%%% A balanced binary search tree containing 1, 2, …, 1000.
2+
3+
A((64))-->B((32))
4+
A-->C((80))
5+
B-->D((16))
6+
B-->E((48))
7+
C-->F((72))
8+
C-->G((88))
9+
F-.->H1:::hidden
10+
F-.->H2:::hidden
11+
G-.->H3:::hidden
12+
G-.->H4:::hidden
13+
D-.->H5:::hidden
14+
D-.->H6:::hidden
15+
E-.->H7:::hidden
16+
E-.->H8:::hidden
17+

0 commit comments

Comments
 (0)