forked from csfx-py/hacktober2020
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBinarySearchTree.java
More file actions
136 lines (133 loc) · 2.5 KB
/
BinarySearchTree.java
File metadata and controls
136 lines (133 loc) · 2.5 KB
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
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BinarySearchTree {
class Node{
int data;
Node left, right;
public Node(int value)
{
data = value;
left = right = null;
}
}
Node root;
BinarySearchTree()
{
root = null;
}
void insert(int data)
{
root = insertRec(root, data);
}
Node insertRec(Node root, int data)
{
if(root == null)
{
root = new Node(data);
return root;
}
else {
if(root.data > data)
{
root.left = insertRec(root.left, data);
}
else if(root.data < data)
{
root.right = insertRec(root.right,data);
}
}
return root;
}
void delete(int data)
{
root =deleteRec(root, data);
}
int minvalue(Node root)
{
int minv = root.data;
while(root.left != null)
{
minv = root.left.data;
root = root.left;
}
return minv;
}
Node deleteRec(Node root, int data)
{
if(root == null)
{
return root;
}
if(root.data > data)
{
root.left = deleteRec(root.left, data);
}
else if(root.data < data)
{
root.right = deleteRec(root.right, data);
}
else
{
if(root.left == null)
{
return root.right;
}
else if(root.right==null)
{
return root.left;
}
root.data = minvalue(root.right);
root.right = deleteRec(root.right, root.data);
}
return root;
}
void inorder()
{
inorderRect(root);
}
void inorderRect(Node root) {
if(root != null)
{
inorderRect(root.left);
System.out.println(root.data+ " ");
inorderRect(root.right);
}
}
public static void main(String[] args) {
FastScanner fs = new FastScanner();
BinarySearchTree tree = new BinarySearchTree();
int n = fs.nextInt();
for(int i = 0; i< n; i++)
{
int a = fs.nextInt();
tree.insert(a);
}
tree.inorder();
}
static class FastScanner{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer("");
String next() {
while (!st.hasMoreTokens())
try {
st=new StringTokenizer(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
return st.nextToken();
}
int nextInt() {
return Integer.parseInt(next());
}
int[] readArray(int n) {
int[] a=new int[n];
for (int i=0; i<n; i++) a[i]=nextInt();
return a;
}
long nextLong() {
return Long.parseLong(next());
}
}
}