Repository navigation
Expand file tree
/
Copy pathBSTree.java
More file actions
139 lines (103 loc) · 2.99 KB
/
Copy pathBSTree.java
File metadata and controls
139 lines (103 loc) · 2.99 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
137
138
139
import java.util.PriorityQueue;
import java.util.Stack;
public class BSTree {
public Node root;
public BSTree() {
root = null;
}
public void add(String d) {
Node p = root;
Node parent = null;//creates a empty parent node
boolean left = false;
while (p != null) {//while root is not empty
if (p.data == d)//if the strings ==
return;
if (d.compareTo(p.data) < 0) {
//instructions for when p.data comes before d (p.data is the parent)
parent = p;//make parent node == p
p = p.left;
left = true;
} else {//instructions for when d comes before p.data
parent = p;
p = p.right;
left = false;
}
}
if (parent == null)//if there is no parent node
root = new Node(d);
else if (left)
parent.left = new Node(d);
else
parent.right = new Node(d);
}
public void printInOrder(Node root) {
//in order traversal
if (root != null) {
printInOrder(root.left);
System.out.println(root.data);
printInOrder(root.right);
}
}
public void InOrderTraversal(Node root){
InOrderTraversal(root.left);
System.out.println(root.data);
InOrderTraversal(root.right);
}
public void PreOrderTraversal(Node root){
System.out.println(root.data);
PreOrderTraversal(root.left);
PreOrderTraversal(root.right);
}
public void PostOrderTraversal(Node root){
PostOrderTraversal(root.left);
PostOrderTraversal(root.right);
System.out.println(root.data);
}
public boolean DFSearch(int value){
Stack <Node> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()){
Node p = stack.pop();
if (p.data == value){//right just bs tree is not
return true;
}
if (p.right != null){
stack.push(p.right);
}
if (p.left != null){
stack.push(p.left);
}
}
return false;
}
public boolean BFSearch(int value){
PriorityQueue q = new PriorityQueue();
q.add(root);
while (q.size() != 0){
Node p = q.remove();
if (p.data == value){
return true;
}
if(p.left != null){
q.add(p.left);
}
if (p.right != null){
q.add(p.right);
}
}
}
private class Node {
public Node left;
public Node right;
public String data;
public Node(String d) {
data = d;
left = null;
right = null;
}
public String toString(){
//to be able to print data
return data;
}
}
}