Skip to content

Commit ab33bf1

Browse files
added some utility classes
1 parent fddbd1b commit ab33bf1

File tree

6 files changed

+444
-0
lines changed

6 files changed

+444
-0
lines changed

Common/src/classes/Interval.java

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package classes;
2+
3+
/**This is a class used by one OJ problem: MeetingRooms*/
4+
public class Interval implements Comparable<Interval> {
5+
public int start;
6+
public int end;
7+
8+
public Interval() {
9+
start = 0;
10+
end = 0;
11+
}
12+
13+
public Interval(int s, int e){
14+
this.start = s;
15+
this.end = e;
16+
}
17+
18+
@Override
19+
public int compareTo(Interval o) {
20+
int compareStart = o.start;
21+
//ascending order
22+
return this.start - compareStart;
23+
}
24+
25+
@Override
26+
public String toString() {
27+
return "Interval [start=" + start + ", end=" + end + "]";
28+
}
29+
}

Common/src/classes/Reader4.java

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package classes;
2+
3+
public class Reader4 {
4+
public int read4(char[] buf){
5+
if(buf.length < 4){
6+
return buf.length;
7+
} else {
8+
return 4;
9+
}
10+
}
11+
}

Common/src/classes/TreeNode.java

+7
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,12 @@ public class TreeNode {
44
public int val;
55
public TreeNode left;
66
public TreeNode right;
7+
78
public TreeNode(int x){this.val = x;}
9+
10+
public TreeNode(TreeNode left, int val, TreeNode right) {
11+
this.left = left;
12+
this.val = val;
13+
this.right = right;
14+
}
815
}

Common/src/utils/BTreePrinter.java

+182
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
/**
2+
*
3+
*/
4+
package utils;
5+
6+
import java.util.ArrayList;
7+
import java.util.Collections;
8+
import java.util.List;
9+
10+
/**
11+
* Copied this class from
12+
* http://stackoverflow.com/questions/4965335/how-to-print-binary-tree-diagram
13+
* This is an awesome one! It prints out the tree in a very nice fashion.
14+
*
15+
*/
16+
public class BTreePrinter {
17+
18+
public static void main(String[] args) {
19+
20+
BTreePrinter.printNode(test1());
21+
BTreePrinter.printNode(test2());
22+
23+
}
24+
25+
public static <T extends Comparable<?>> void printNode(Node<T> root) {
26+
int maxLevel = BTreePrinter.maxLevel(root);
27+
28+
printNodeInternal(Collections.singletonList(root), 1, maxLevel);
29+
}
30+
31+
private static <T extends Comparable<?>> void printNodeInternal(
32+
List<Node<T>> nodes, int level, int maxLevel) {
33+
if (nodes.isEmpty() || BTreePrinter.isAllElementsNull(nodes))
34+
return;
35+
36+
int floor = maxLevel - level;
37+
int endgeLines = (int) Math.pow(2, (Math.max(floor - 1, 0)));
38+
int firstSpaces = (int) Math.pow(2, (floor)) - 1;
39+
int betweenSpaces = (int) Math.pow(2, (floor + 1)) - 1;
40+
41+
BTreePrinter.printWhitespaces(firstSpaces);
42+
43+
List<Node<T>> newNodes = new ArrayList<Node<T>>();
44+
for (Node<T> node : nodes) {
45+
if (node != null) {
46+
System.out.print(node.data);
47+
newNodes.add(node.left);
48+
newNodes.add(node.right);
49+
} else {
50+
newNodes.add(null);
51+
newNodes.add(null);
52+
System.out.print(" ");
53+
}
54+
55+
BTreePrinter.printWhitespaces(betweenSpaces);
56+
}
57+
System.out.println("");
58+
59+
for (int i = 1; i <= endgeLines; i++) {
60+
for (int j = 0; j < nodes.size(); j++) {
61+
BTreePrinter.printWhitespaces(firstSpaces - i);
62+
if (nodes.get(j) == null) {
63+
BTreePrinter.printWhitespaces(endgeLines + endgeLines + i
64+
+ 1);
65+
continue;
66+
}
67+
68+
if (nodes.get(j).left != null)
69+
System.out.print("/");
70+
else
71+
BTreePrinter.printWhitespaces(1);
72+
73+
BTreePrinter.printWhitespaces(i + i - 1);
74+
75+
if (nodes.get(j).right != null)
76+
System.out.print("\\");
77+
else
78+
BTreePrinter.printWhitespaces(1);
79+
80+
BTreePrinter.printWhitespaces(endgeLines + endgeLines - i);
81+
}
82+
83+
System.out.println("");
84+
}
85+
86+
printNodeInternal(newNodes, level + 1, maxLevel);
87+
}
88+
89+
private static void printWhitespaces(int count) {
90+
for (int i = 0; i < count; i++)
91+
System.out.print(" ");
92+
}
93+
94+
private static <T extends Comparable<?>> int maxLevel(Node<T> node) {
95+
if (node == null)
96+
return 0;
97+
98+
return Math.max(BTreePrinter.maxLevel(node.left),
99+
BTreePrinter.maxLevel(node.right)) + 1;
100+
}
101+
102+
private static <T> boolean isAllElementsNull(List<T> list) {
103+
for (Object object : list) {
104+
if (object != null)
105+
return false;
106+
}
107+
108+
return true;
109+
}
110+
111+
private static Node<Integer> test1() {
112+
Node<Integer> root = new Node<Integer>(2);
113+
Node<Integer> n11 = new Node<Integer>(7);
114+
Node<Integer> n12 = new Node<Integer>(5);
115+
Node<Integer> n21 = new Node<Integer>(2);
116+
Node<Integer> n22 = new Node<Integer>(6);
117+
Node<Integer> n23 = new Node<Integer>(3);
118+
Node<Integer> n24 = new Node<Integer>(6);
119+
Node<Integer> n31 = new Node<Integer>(5);
120+
Node<Integer> n32 = new Node<Integer>(8);
121+
Node<Integer> n33 = new Node<Integer>(4);
122+
Node<Integer> n34 = new Node<Integer>(5);
123+
Node<Integer> n35 = new Node<Integer>(8);
124+
Node<Integer> n36 = new Node<Integer>(4);
125+
Node<Integer> n37 = new Node<Integer>(5);
126+
Node<Integer> n38 = new Node<Integer>(8);
127+
128+
root.left = n11;
129+
root.right = n12;
130+
131+
n11.left = n21;
132+
n11.right = n22;
133+
n12.left = n23;
134+
n12.right = n24;
135+
136+
n21.left = n31;
137+
n21.right = n32;
138+
n22.left = n33;
139+
n22.right = n34;
140+
n23.left = n35;
141+
n23.right = n36;
142+
n24.left = n37;
143+
n24.right = n38;
144+
145+
return root;
146+
}
147+
148+
private static Node<Integer> test2() {
149+
Node<Integer> root = new Node<Integer>(2);
150+
Node<Integer> n11 = new Node<Integer>(7);
151+
Node<Integer> n12 = new Node<Integer>(5);
152+
Node<Integer> n21 = new Node<Integer>(2);
153+
Node<Integer> n22 = new Node<Integer>(6);
154+
Node<Integer> n23 = new Node<Integer>(9);
155+
Node<Integer> n31 = new Node<Integer>(5);
156+
Node<Integer> n32 = new Node<Integer>(8);
157+
Node<Integer> n33 = new Node<Integer>(4);
158+
159+
root.left = n11;
160+
root.right = n12;
161+
162+
n11.left = n21;
163+
n11.right = n22;
164+
165+
n12.right = n23;
166+
n22.left = n31;
167+
n22.right = n32;
168+
169+
n23.left = n33;
170+
171+
return root;
172+
}
173+
}
174+
175+
class Node<T extends Comparable<?>> {
176+
Node<T> left, right;
177+
T data;
178+
179+
public Node(T data) {
180+
this.data = data;
181+
}
182+
}

Common/src/utils/Notes.java

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
*
3+
*/
4+
package utils;
5+
6+
import java.lang.annotation.Retention;
7+
import java.lang.annotation.RetentionPolicy;
8+
9+
@Retention(RetentionPolicy.SOURCE)
10+
public @interface Notes {
11+
12+
String todo() default "";
13+
14+
String problemReview() default "";
15+
16+
String issue() default "";
17+
18+
String context() default ""; // this variable is used to state how I solved
19+
// this problem, whether completely made it
20+
// myself, or copied it from online, or a
21+
// combination of both approaches.
22+
23+
boolean needsReview() default true;
24+
25+
}

0 commit comments

Comments
 (0)