-
Notifications
You must be signed in to change notification settings - Fork 0
/
BinarySearchTree-yc.cs
119 lines (106 loc) · 3.07 KB
/
BinarySearchTree-yc.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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BinarySearchTree
{
class Program
{
static void Main(string[] args)
{
BinarySearchTree bst = new BinarySearchTree();
bst.Insert(50);
bst.Insert(33);
bst.Insert(21);
bst.Insert(55);
bst.Insert(9);
bst.Insert(13);
bst.Insert(5);
bst.Insert(57);
bst.PrintTree();
bst.Search(5);
Console.ReadLine();
}
}
class BinarySearchTree
{
private Node _rootNode { get; set; }
public BinarySearchTree()
{
_rootNode = new Node();
}
public void Insert(int value)
{
Node curNode = _rootNode;
if (curNode.Content == 0)
{
curNode.Content = value;
}
insertNode(curNode, value);
}
private void insertNode(Node curNode, int value)
{
Node newNode = new Node(value);
if (curNode.Content > value)
{
if (curNode.Left == null)
{
curNode.Left = newNode;
}
else
{
insertNode(curNode.Left, value);
}
}
else if (curNode.Content == value)
return;
else // curNode.Content < value
{
if (curNode.Right == null)
curNode.Right = newNode;
else
insertNode(curNode.Right, value);
}
}
public bool Search(int value)
{
Node node = _rootNode;
Console.WriteLine("Node = " + node.Content.ToString());
if (node.Content == value)
{
Console.WriteLine("Content = " + node.Content.ToString());
return true;
}
else if (node.Content > value)
return searchNode(node.Left, value);
else
return searchNode(node.Right, value);
}
private bool searchNode(Node node, int value)
{
if (node == null) return false;
Console.WriteLine("Node = " + node.Content.ToString());
if (node.Content == value)
{
Console.WriteLine("Content = " + node.Content.ToString());
return true;
}
else if (node.Content > value)
return searchNode(node.Left, value);
else // node.Content < value
return searchNode(node.Right, value);
}
public void PrintTree()
{
printSubtree(_rootNode);
}
private void printSubtree(Node node)
{
if (node == null) return;
printSubtree(node.Left);
Console.WriteLine(node.Content.ToString());
printSubtree(node.Right);
}
}
}