Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0a30879

Browse files
Binary Search Tree
1 parent a1de7fd commit 0a30879

File tree

1 file changed

+79
-82
lines changed

1 file changed

+79
-82
lines changed
Lines changed: 79 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package me.premaseem.datastructure.binarySearchTree;
22

3-
class N {
4-
N l, r;
5-
int v;
63

7-
public N(int v) {
8-
this.v = v;
4+
class Node {
5+
Node left, right;
6+
int data;
7+
8+
public Node(int d) {
9+
data = d;
910
}
11+
1012
}
1113

1214
public class BinarySearchTree {
1315

14-
N root;
15-
16+
Node root;
1617
// Driver Program to test above functions
1718
public static void main(String[] args) {
1819
BinarySearchTree tree = new BinarySearchTree();
@@ -23,6 +24,7 @@ public static void main(String[] args) {
2324
30 70
2425
/ \ / \
2526
20 40 60 80 */
27+
2628
tree.insert(50);
2729
tree.insert(30);
2830
tree.insert(20);
@@ -31,113 +33,108 @@ public static void main(String[] args) {
3133
tree.insert(60);
3234
tree.insert(80);
3335

34-
// print inorder traversal of the BST
35-
tree.inorder();
36+
// print inorder traversal of the BST
37+
tree.inOrder();
38+
39+
tree.search(100);
40+
tree.search(30);
3641

37-
tree.search(70);
38-
tree.search(700);
39-
tree.deleteN(30);
40-
tree.deleteN(31);
41-
tree.deleteN(70);
42-
tree.inorder();
42+
tree.delete(30);
43+
tree.delete(30);
44+
tree.delete(50);
45+
46+
System.out.println();
47+
tree.inOrder();
4348
}
4449

45-
private void deleteN(int v) {
46-
root = deleteR(root,v);
50+
private void delete(int d) {
51+
root = deleteR(root,d);
4752
}
4853

49-
private N deleteR(Nn, int v) {
54+
private Node deleteR(Noden ,int d) {
5055
if(n == null){
51-
System.out.println("cannot delete, item not found");
5256
return n;
5357
}
54-
55-
if (v < n.v){
56-
n.l = deleteR(n.l, v);
57-
} else
58-
if (v > n.v){
59-
n.r = deleteR(n.r, v);
60-
}
61-
62-
// if we are here, this means we have identified the note to delete
63-
else{
64-
65-
// 1 child or less child
66-
if(n.l == null){
67-
return n.r;
68-
}
69-
if(n.r == null){
70-
return n.l;
58+
if(d < n.data){
59+
n.left = deleteR(n.left,d);
60+
}else if(d > n.data){
61+
n.right = deleteR(n.right,d);
62+
} else {
63+
// 1 or all nodes are null
64+
if(n.left == null){
65+
return n.right;
66+
}else if (n.right == null){
67+
return n.left;
7168
}
72-
// 2 childs
73-
n.v = minVal(n.r); // get min value from right side and remove that node
74-
deleteR(n.r,n.v);
75-
}
7669

70+
n.data = findMin(n.right);
71+
n.right = deleteR(n.right,n.data);
72+
// if both node are not null
73+
}
7774
return n;
78-
}
79-
80-
int minVal(N n){
81-
int minV = n.v;
82-
while(n.l != null){
83-
minV = n.l.v;
84-
n = n.l;
8575

86-
}
87-
return minV;
8876
}
8977

90-
private void search(int v) {
91-
searchRec(root, v);
78+
int findMin(Node n){
79+
int min = n.data;
80+
if(n.left != null){
81+
min = n.data;
82+
n = n.left;
83+
}
84+
return min;
9285
}
9386

94-
private void searchRec(N n, int v) {
9587

96-
if (n == null) {
97-
System.out.println("not found");
98-
return;
99-
}
88+
private void insert(int d) {
89+
root = insertR(root,d);
90+
}
10091

101-
if (n.v == v) {
102-
System.out.println("Found");
92+
private Node insertR(Node n ,int d) {
93+
if(n == null){
94+
return new Node(d);
10395
}
104-
if (v < n.v) {
105-
searchRec(n.l, v);
106-
}elseif (v > n.v) {
107-
searchRec(n.r, v);
96+
if(d < n.data){
97+
n.left = insertR(n.left, d);
98+
}else {
99+
n.right = insertR(n.right, d);
108100
}
101+
return n;
109102
}
110103

111-
void inorder() {
112-
System.out.println("printing in order BST in sorted order ");
113-
inorderRec(root);
114104

105+
void inOrder(){
106+
inOrderR(root);
115107
}
116108

117-
void inorderRec(N n) {
118-
if (n != null) {
119-
inorderRec(n.l);
120-
System.out.print(" >> " + n.v);
121-
inorderRec(n.r);
109+
private void inOrderR(Node n) {
110+
if(n == null){
111+
return;
122112
}
113+
inOrderR(n.left);
114+
System.out.print(" >> "+ n.data);
115+
inOrderR(n.right);
123116
}
124117

125-
private void insert(int v) {
126-
root = insert(root, v);
127118

119+
void search(int d){
120+
searchR(root, d);
128121
}
129122

130-
private N insert(N n, int v) {
131-
if (n == null) {
132-
return new N(v);
133-
}
134-
if (v < n.v) {
135-
n.l = insert(n.l, v);
136-
} else if (v > n.v) {
137-
n.r = insert(n.r, v);
123+
private void searchR(Node n, int d) {
124+
if(n == null){
125+
System.out.println("not found ");
126+
return;
138127
}
139-
return n;
140-
}
141128

129+
if(d == n.data){
130+
System.out.println("Element found :-) ");
131+
return;
132+
}
133+
if(d < n.data){
134+
searchR(n.left, d);
135+
}else {
136+
searchR(n.right,d);
137+
}
142138

139+
}
143140
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /