Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitab33bf1

Browse files
added some utility classes
1 parentfddbd1b commitab33bf1

File tree

6 files changed

+444
-0
lines changed

6 files changed

+444
-0
lines changed

‎Common/src/classes/Interval.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
packageclasses;
2+
3+
/**This is a class used by one OJ problem: MeetingRooms*/
4+
publicclassIntervalimplementsComparable<Interval> {
5+
publicintstart;
6+
publicintend;
7+
8+
publicInterval() {
9+
start =0;
10+
end =0;
11+
}
12+
13+
publicInterval(ints,inte){
14+
this.start =s;
15+
this.end =e;
16+
}
17+
18+
@Override
19+
publicintcompareTo(Intervalo) {
20+
intcompareStart =o.start;
21+
//ascending order
22+
returnthis.start -compareStart;
23+
}
24+
25+
@Override
26+
publicStringtoString() {
27+
return"Interval [start=" +start +", end=" +end +"]";
28+
}
29+
}

‎Common/src/classes/Reader4.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
packageclasses;
2+
3+
publicclassReader4 {
4+
publicintread4(char[]buf){
5+
if(buf.length <4){
6+
returnbuf.length;
7+
}else {
8+
return4;
9+
}
10+
}
11+
}

‎Common/src/classes/TreeNode.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,12 @@ public class TreeNode {
44
publicintval;
55
publicTreeNodeleft;
66
publicTreeNoderight;
7+
78
publicTreeNode(intx){this.val =x;}
9+
10+
publicTreeNode(TreeNodeleft,intval,TreeNoderight) {
11+
this.left =left;
12+
this.val =val;
13+
this.right =right;
14+
}
815
}

‎Common/src/utils/BTreePrinter.java

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
/**
2+
*
3+
*/
4+
packageutils;
5+
6+
importjava.util.ArrayList;
7+
importjava.util.Collections;
8+
importjava.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+
publicclassBTreePrinter {
17+
18+
publicstaticvoidmain(String[]args) {
19+
20+
BTreePrinter.printNode(test1());
21+
BTreePrinter.printNode(test2());
22+
23+
}
24+
25+
publicstatic <TextendsComparable<?>>voidprintNode(Node<T>root) {
26+
intmaxLevel =BTreePrinter.maxLevel(root);
27+
28+
printNodeInternal(Collections.singletonList(root),1,maxLevel);
29+
}
30+
31+
privatestatic <TextendsComparable<?>>voidprintNodeInternal(
32+
List<Node<T>>nodes,intlevel,intmaxLevel) {
33+
if (nodes.isEmpty() ||BTreePrinter.isAllElementsNull(nodes))
34+
return;
35+
36+
intfloor =maxLevel -level;
37+
intendgeLines = (int)Math.pow(2, (Math.max(floor -1,0)));
38+
intfirstSpaces = (int)Math.pow(2, (floor)) -1;
39+
intbetweenSpaces = (int)Math.pow(2, (floor +1)) -1;
40+
41+
BTreePrinter.printWhitespaces(firstSpaces);
42+
43+
List<Node<T>>newNodes =newArrayList<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 (inti =1;i <=endgeLines;i++) {
60+
for (intj =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+
privatestaticvoidprintWhitespaces(intcount) {
90+
for (inti =0;i <count;i++)
91+
System.out.print(" ");
92+
}
93+
94+
privatestatic <TextendsComparable<?>>intmaxLevel(Node<T>node) {
95+
if (node ==null)
96+
return0;
97+
98+
returnMath.max(BTreePrinter.maxLevel(node.left),
99+
BTreePrinter.maxLevel(node.right)) +1;
100+
}
101+
102+
privatestatic <T>booleanisAllElementsNull(List<T>list) {
103+
for (Objectobject :list) {
104+
if (object !=null)
105+
returnfalse;
106+
}
107+
108+
returntrue;
109+
}
110+
111+
privatestaticNode<Integer>test1() {
112+
Node<Integer>root =newNode<Integer>(2);
113+
Node<Integer>n11 =newNode<Integer>(7);
114+
Node<Integer>n12 =newNode<Integer>(5);
115+
Node<Integer>n21 =newNode<Integer>(2);
116+
Node<Integer>n22 =newNode<Integer>(6);
117+
Node<Integer>n23 =newNode<Integer>(3);
118+
Node<Integer>n24 =newNode<Integer>(6);
119+
Node<Integer>n31 =newNode<Integer>(5);
120+
Node<Integer>n32 =newNode<Integer>(8);
121+
Node<Integer>n33 =newNode<Integer>(4);
122+
Node<Integer>n34 =newNode<Integer>(5);
123+
Node<Integer>n35 =newNode<Integer>(8);
124+
Node<Integer>n36 =newNode<Integer>(4);
125+
Node<Integer>n37 =newNode<Integer>(5);
126+
Node<Integer>n38 =newNode<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+
returnroot;
146+
}
147+
148+
privatestaticNode<Integer>test2() {
149+
Node<Integer>root =newNode<Integer>(2);
150+
Node<Integer>n11 =newNode<Integer>(7);
151+
Node<Integer>n12 =newNode<Integer>(5);
152+
Node<Integer>n21 =newNode<Integer>(2);
153+
Node<Integer>n22 =newNode<Integer>(6);
154+
Node<Integer>n23 =newNode<Integer>(9);
155+
Node<Integer>n31 =newNode<Integer>(5);
156+
Node<Integer>n32 =newNode<Integer>(8);
157+
Node<Integer>n33 =newNode<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+
returnroot;
172+
}
173+
}
174+
175+
classNode<TextendsComparable<?>> {
176+
Node<T>left,right;
177+
Tdata;
178+
179+
publicNode(Tdata) {
180+
this.data =data;
181+
}
182+
}

‎Common/src/utils/Notes.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
*
3+
*/
4+
packageutils;
5+
6+
importjava.lang.annotation.Retention;
7+
importjava.lang.annotation.RetentionPolicy;
8+
9+
@Retention(RetentionPolicy.SOURCE)
10+
public @interfaceNotes {
11+
12+
Stringtodo()default"";
13+
14+
StringproblemReview()default"";
15+
16+
Stringissue()default"";
17+
18+
Stringcontext()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+
booleanneedsReview()defaulttrue;
24+
25+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp