-
Notifications
You must be signed in to change notification settings - Fork 17
/
LevelOrderToBST.java
132 lines (116 loc) · 3.1 KB
/
LevelOrderToBST.java
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
package SummerTrainingGFG.BinarySearchTree;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/**
* @author Vishal Singh
* 10-01-2021
*/
public class LevelOrderToBST {
static final boolean multipleTestCase = true;
public static void main(String[] args) throws Exception {
try {
FastReader fr = new FastReader();
int t = multipleTestCase ? fr.nextInt() : 1;
while (t-- > 0) {
int n = fr.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = fr.nextInt();
}
Node tree = constructBST(arr);
preorder(tree);
System.out.println();
}
} catch (Exception e) {
} finally {
}
}
static Node constructBST(int[] arr) {
Node root = null;
for (int j : arr) {
root = levelOrder(root, j);
}
return root;
}
static Node levelOrder(Node root,int data){
if (root == null){
root = new Node(data);
return root;
}
if (data < root.data){
root.left = levelOrder(root.left,data);
}else {
root.right = levelOrder(root.right,data);
}
return root;
}
static class Node {
int data;
Node left;
Node right;
Node(int data) {
this.data = data;
}
}
public static void preorder(Node root){
if (root!=null){
System.out.print(root.data + " ");
preorder(root.left);
preorder(root.right);
}
}
static int min(int... values) {
int res = Integer.MAX_VALUE;
for (int x :
values) {
res = Math.min(x, res);
}
return res;
}
static int max(int... values) {
int res = Integer.MIN_VALUE;
for (int x :
values) {
res = Math.max(x, res);
}
return res;
}
static class FastReader {
BufferedReader br;
StringTokenizer st;
public FastReader() {
br = new BufferedReader(new
InputStreamReader(System.in));
}
String next() {
while (st == null || !st.hasMoreElements()) {
try {
st = new StringTokenizer(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() {
return Integer.parseInt(next());
}
long nextLong() {
return Long.parseLong(next());
}
double nextDouble() {
return Double.parseDouble(next());
}
String nextLine() {
String str = "";
try {
str = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
}
}