-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSortReleaseDate.java
More file actions
171 lines (153 loc) · 4.79 KB
/
SortReleaseDate.java
File metadata and controls
171 lines (153 loc) · 4.79 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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
/* FINAL PROJECT - CHI, EUGENIE, MADISON - DEC 20, 2021
This is another class of all movies that is implemented using Binary Search Tree data structure.
The sole purpose of this class is to sort movies by its release date.
*/
public class SortReleaseDate implements java.io.Serializable{
private Movie t;
public SortReleaseDate() {
t = null;
}
public boolean isEmptyTree() {
return t == null;
}
// This method allows for sorting the movie list by newest -> oldest release date
public void traversee() {
traversee2(t);
}
public void traversee2(Movie y) {
if (y != null) {
traversee2(y.getRight());
System.out.println(y.getTitle() + " " + y.getReleaseDate() + " " + y.getID() + " " + y.getRating());
traversee2(y.getLeft());
}
}
// This method allows for sorting the movie list by oldest -> newest release date
public void traverse() {
traverse2(t);
}
public void traverse2(Movie y) {
if (y != null) {
traverse2(y.getLeft());
System.out.println(y.getTitle() + " " + y.getReleaseDate() + " " + y.getID() + " " + y.getRating());
traverse2(y.getRight());
}
}
public Movie search(int releaseDate) {
if (t == null) {
return null;
}
else {
return search2(t, releaseDate);
}
}
public Movie search2(Movie x, int releaseDate) {
if (x == null) {
return null;
}
else if (x.getReleaseDate() == releaseDate) {
return x;
}
else if (x.getReleaseDate() > releaseDate) {
return search2(x.getLeft(), releaseDate);
}
else if (x.getReleaseDate() < releaseDate) {
return search2(x.getRight(), releaseDate);
}
else {
return x;
}
}
// This method allows for inserting a new movie into the sort list
public void insert(Movie p) {
if (t == null) {
t = p;
}
else {
insert2(t, p);
}
}
public void insert2(Movie t, Movie p) {
if (p.getReleaseDate() < t.getReleaseDate()) {
if (t.getLeft() == null) {
t.setLeft(p);
}
else {
insert2(t.getLeft(), p);
}
}
else {
if (t.getRight() == null) {
t.setRight(p);
}
else {
insert2(t.getRight(), p);
}
}
}
public Movie getMin(Movie z) {
if (z.getLeft() == null) {
return z;
}
else {
return getMin(z.getLeft());
}
}
public void delete (Movie p) {
t = delete2(t, p);
}
public Movie delete2(Movie t, Movie p) {
// if tree is empty
if (t == null) {
return t;
}
// traverse left side to get to the movie being deleted
else if (p.getReleaseDate() < t.getReleaseDate()) {
t.setLeft(delete2(t.getLeft(), p));
}
// traverse right side to get to the movie being deleted
else if (p.getReleaseDate() > t.getReleaseDate()) {
t.setRight(delete2(t.getRight(), p));
}
else {
// if movie deleted has two children, the sucessor would take its place
if (t.getLeft() != null && t.getRight() != null) {
// get the smallest movie in the right side (sucessor)
Movie min = getMin(t.getRight());
t.setReleaseDate(min.getReleaseDate());
t.setRight(delete2(t.getRight(), min));
}
// if movie deleted has one child, the child would take its place
else if (t.getRight() == null) {
t = t.getLeft();
}
else if (t.getLeft() == null) {
t = t.getRight();
}
// if movie is a leaf
else {
return null;
}
}
return t;
}
public void printSorted() {
System.out.println();
printSorted2(t);
System.out.println();
}
private void printSorted2(Movie t) {
if (t != null) {
System.out.print(t.getReleaseDate() + " ");
if (t.getLeft() != null)
System.out.print("Left: " + t.getLeft().getReleaseDate() + " ");
else
System.out.print("Left: null ");
if (t.getRight() != null)
System.out.println("Right: " + t.getRight().getReleaseDate() + " ");
else
System.out.println("Right: null ");
printSorted2(t.getLeft());
printSorted2(t.getRight());
}
}
}