Skip to content

Commit 5e1cec6

Browse files
committed
Implement level order traverse to BST
1 parent 0a3f792 commit 5e1cec6

File tree

4 files changed

+39
-9
lines changed

4 files changed

+39
-9
lines changed

src/ConsoleApp/Ds/Trees.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ private static void BinaryTreeUsage()
2121
bTree.TraversePreOrder();
2222
bTree.TraverseInOrder();
2323
bTree.TraversePostOrder();
24+
bTree.TraverseLevelOrder();
2425

2526
bTree.Remove(13);
2627

@@ -53,8 +54,8 @@ private static void AvlTreeUsage()
5354

5455
public static void Use()
5556
{
56-
//BinaryTreeUsage();
57-
AvlTreeUsage();
57+
BinaryTreeUsage();
58+
//AvlTreeUsage();
5859
}
5960

6061
}

src/ConsoleApp/Program.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ public static void Main()
1818
// Lists.Use();
1919
// Stacks.Use();
2020
// Queues.Use();
21-
// Trees.Use();
21+
Trees.Use();
2222
// Sorting
2323
// Sorting.Use();
2424

2525
// Encoding
26-
Encoding.Use();
26+
// Encoding.Use();
2727
}
2828
}
2929

src/DataStructures/AbstractDataTypes/Trees/AvlTree.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,30 +167,30 @@ private static Node GetBalancedTree(Node current)
167167
private static Node RotateRr(Node parent)
168168
{
169169
var pivot = parent.Right;
170-
parent.Right = pivot.Left;
170+
parent.Right = pivot!.Left;
171171
pivot.Left = parent;
172172
return pivot;
173173
}
174174

175175
private static Node RotateLl(Node parent)
176176
{
177177
var pivot = parent.Left;
178-
parent.Left = pivot.Right;
178+
parent.Left = pivot!.Right;
179179
pivot.Right = parent;
180180
return pivot;
181181
}
182182

183183
private static Node RotateLr(Node parent)
184184
{
185185
var pivot = parent.Left;
186-
parent.Left = RotateRr(pivot);
186+
parent.Left = RotateRr(pivot!);
187187
return RotateLl(parent);
188188
}
189189

190190
private static Node RotateRl(Node parent)
191191
{
192192
var pivot = parent.Right;
193-
parent.Right = RotateLl(pivot);
193+
parent.Right = RotateLl(pivot!);
194194
return RotateRr(parent);
195195
}
196196

src/DataStructures/AbstractDataTypes/Trees/BinarySearchTree.cs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public void Remove(T data)
106106
{
107107
return _root is null ? null : Max(_root);
108108
}
109-
109+
110110
private static T Min(Node node)
111111
{
112112
var min = node.Data;
@@ -204,4 +204,33 @@ private static void TraversePostOrder(Node? parent)
204204
TraversePostOrder(parent.Right);
205205
Console.Write(parent.Data + " ");
206206
}
207+
208+
/// <summary>
209+
/// Level Order
210+
/// </summary>
211+
public void TraverseLevelOrder()
212+
{
213+
Console.Write($"TraverseLevelOrder(LRD) with Depth {GetDepth()}: ");
214+
TraverseLevelOrder(_root);
215+
Console.WriteLine();
216+
}
217+
218+
private static void TraverseLevelOrder(Node? parent)
219+
{
220+
if (parent is null)
221+
return;
222+
223+
var q = new Queue<Node>();
224+
q.Enqueue(parent);
225+
while (q.Count > 0)
226+
{
227+
var r = q.Dequeue();
228+
Console.Write(r.Data + " ");
229+
230+
if (r.Left is not null)
231+
q.Enqueue(r.Left);
232+
if (r.Right is not null)
233+
q.Enqueue(r.Right);
234+
}
235+
}
207236
}

0 commit comments

Comments
 (0)