-
Notifications
You must be signed in to change notification settings - Fork 0
/
Trees.cs
143 lines (132 loc) · 4.53 KB
/
Trees.cs
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DSA
{
public class Trees
{
public class BinaryTree
{
public int data;
public BinaryTree parent;
public BinaryTree leftTree;
public BinaryTree rightTree;
}
public static void AddElement(BinaryTree tree, int data)
{
bool nodeLeftAdded = false;
bool nodeRightAdded = false;
if (tree.parent == null)
{
tree.data = data;
tree.parent = tree;
tree.leftTree = null;
tree.rightTree = null;
Console.WriteLine("New element added with data :" + tree.data + "\n");
}
else {
while (!nodeRightAdded && !nodeLeftAdded)
{
if (data < tree.data)
{
while (data < tree.data && tree.leftTree != null)
{
tree = tree.leftTree;
}
if (data < tree.data)
{
tree.leftTree = new BinaryTree();
AddElement(tree.leftTree, data);
nodeLeftAdded = true;
Console.WriteLine("New element added to left with data:" + data + "\n");
}
}
else if (data > tree.data)
{
while (data > tree.data && tree.rightTree != null)
{
tree = tree.rightTree;
}
if (data > tree.data)
{
tree.rightTree = new BinaryTree();
AddElement(tree.rightTree, data);
nodeRightAdded = true;
Console.WriteLine("New element added to right with data : " + data + "with previous node data \n");
}
}
}
}
}
public static BinaryTree FindMinimum(BinaryTree tree)
{
if(tree.parent == null)
{
return null;
}
else
{
while(tree.leftTree != null)
{
tree = tree.leftTree;
}
Console.WriteLine("The minimim data of the node is :" + tree.data);
return tree;
}
}
public static BinaryTree FindMaximum(BinaryTree tree)
{
if (tree.parent == null)
{
return null;
}
else
{
while (tree.rightTree != null)
{
tree = tree.rightTree;
}
Console.WriteLine("The maximum data of the node is :" + tree.data);
return tree;
}
}
public static BinaryTree SearchNode(BinaryTree tree, int data)
{
bool nodeFound = false;
if(tree.parent == null)
{
return null;
}
else
{
while (!nodeFound && tree != null)
{
if (data < tree.data && tree != null)
{
tree = tree.leftTree;
if (tree != null && tree.data == data)
{
nodeFound = true;
Console.WriteLine("The node was found !");
return tree;
}
}
else if (data > tree.data )
{
tree = tree.rightTree;
if ( tree != null && tree.data == data)
{
nodeFound = true;
Console.WriteLine("The node was found !");
return tree;
}
}
}
Console.WriteLine("No node found, Sorry!");
return tree;
}
}
}
}