Skip to content

Commit 31f9f5c

Browse files
committed
commit
1 parent 41d3a49 commit 31f9f5c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+983
-3
lines changed

.metadata/.log

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,29 @@ Command-line arguments: -os linux -ws gtk -arch x86_64
3030

3131
!ENTRY org.eclipse.core.resources 2 10035 2017-09-24 15:01:27.343
3232
!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.
33+
!SESSION 2017-09-27 17:28:25.118 -----------------------------------------------
34+
eclipse.buildId=debbuild
35+
java.version=1.7.0_131
36+
java.vendor=Oracle Corporation
37+
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=zh_CN
38+
Command-line arguments: -os linux -ws gtk -arch x86_64
39+
40+
!ENTRY org.eclipse.core.resources 2 10035 2017-09-27 17:28:31.598
41+
!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.
42+
43+
!ENTRY org.eclipse.jdt.ui 4 10001 2017-09-27 17:33:54.772
44+
!MESSAGE Internal Error
45+
!STACK 1
46+
Java Model Exception: Java Model Status [Timed out while retrieving the attached javadoc for CommandObject [in CommandObject.class [in javax.activation [in /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar]]] ]
47+
at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:808)
48+
at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037)
49+
at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995)
50+
at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463)
51+
at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95)
52+
at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75)
53+
at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58)
54+
at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555)
55+
at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106)
56+
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
57+
!SUBENTRY 1 org.eclipse.jdt.core 4 1012 2017-09-27 17:33:54.773
58+
!MESSAGE Timed out while retrieving the attached javadoc for CommandObject [in CommandObject.class [in javax.activation [in /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar]]]

.metadata/.plugins/org.eclipse.core.resources/.history/1/006118ac66a300171efede8e9d0aaded

Whitespace-only changes.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package redBlackTree;
2+
3+
public class RedBlackTree {
4+
RBTree NIL;
5+
RBTree root;
6+
public class RBTree<T extends Comparable<T>>{
7+
RBTree leftChild;
8+
RBTree rightChild;
9+
RBTree parent;
10+
T key;
11+
boolean color;
12+
}
13+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package redBlackTree;
2+
3+
public class TestRedBlackTree {
4+
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package redBlackTree;
2+
3+
public class RedBlackTree {
4+
5+
}
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
package redBlackTree;
2+
3+
public class RedBlackTree <T extends Comparable<T>>{
4+
public static final boolean RED=true;
5+
public static final boolean BLACK=false;
6+
public RBTreeNode NIL;
7+
public RBTreeNode root;
8+
public class RBTreeNode<T extends Comparable<T>>{
9+
RBTreeNode leftChild;
10+
RBTreeNode rightChild;
11+
RBTreeNode parent;
12+
T key;
13+
boolean color;
14+
}
15+
public void print() {
16+
// TODO Auto-generated method stub
17+
System.out.println(root.key);
18+
}
19+
public void insert(T key){
20+
RBTreeNode newRBTreeNode=new RBTreeNode<>();
21+
newRBTreeNode.key=key;
22+
RBTreeNode y=NIL;
23+
RBTreeNode x=root;
24+
while(x!=NIL){
25+
y=x;
26+
if(newRBTreeNode.key.compareTo(x.key)<0){
27+
x=x.leftChild;
28+
}else{
29+
x=x.rightChild;
30+
}
31+
}
32+
newRBTreeNode.parent=y;
33+
if(y==NIL){
34+
root=newRBTreeNode;
35+
}else if(newRBTreeNode.key.compareTo(y.key)<0){
36+
y.leftChild=newRBTreeNode;
37+
}else{
38+
y.rightChild=newRBTreeNode;
39+
}
40+
newRBTreeNode.leftChild=NIL;
41+
newRBTreeNode.rightChild=NIL;
42+
newRBTreeNode.color=RED;
43+
insertFixUp(newRBTreeNode);
44+
}
45+
private void insertFixUp(RBTreeNode newRBTreeNode) {
46+
// TODO Auto-generated method stub
47+
if(newRBTreeNode.parent!=null){
48+
while(newRBTreeNode.parent.color==RED){
49+
if(newRBTreeNode.parent==newRBTreeNode.parent.parent.leftChild){
50+
RBTreeNode y=newRBTreeNode.parent.parent.rightChild;
51+
if(y.color==RED){
52+
newRBTreeNode.parent.color=BLACK;
53+
y.color=BLACK;
54+
newRBTreeNode.parent.parent.color=RED;
55+
newRBTreeNode=newRBTreeNode.parent.parent;
56+
}else if(newRBTreeNode==newRBTreeNode.parent.rightChild){
57+
newRBTreeNode=newRBTreeNode.parent;
58+
leftRotate(newRBTreeNode);
59+
}else{
60+
newRBTreeNode.parent.color=BLACK;
61+
newRBTreeNode.parent.parent.color=RED;
62+
rightRotate(newRBTreeNode);
63+
}
64+
}else{
65+
//same as then clause with "right" and "left" changted
66+
}
67+
}
68+
}
69+
70+
root.color=BLACK;
71+
}
72+
private void rightRotate(RBTreeNode newRBTreeNode) {
73+
// TODO Auto-generated method stub
74+
RBTreeNode x=newRBTreeNode.leftChild;
75+
newRBTreeNode.leftChild=x.rightChild;
76+
if(x.rightChild!=NIL){
77+
x.rightChild.parent=newRBTreeNode;
78+
}
79+
x.parent=newRBTreeNode.parent;
80+
if(newRBTreeNode==NIL){
81+
root=x;
82+
}else if(newRBTreeNode==newRBTreeNode.parent.leftChild){
83+
newRBTreeNode.parent.leftChild=x;
84+
}else{
85+
newRBTreeNode.parent.rightChild=x;
86+
}
87+
x.rightChild=newRBTreeNode;
88+
newRBTreeNode.parent=x;
89+
}
90+
private void leftRotate(RBTreeNode newRBTreeNode) {
91+
// TODO Auto-generated method stub
92+
RBTreeNode y=newRBTreeNode.rightChild;
93+
newRBTreeNode.rightChild=y.leftChild;
94+
if(y.leftChild!=null){
95+
y.leftChild.parent=newRBTreeNode;
96+
}
97+
y.parent=newRBTreeNode.parent;
98+
if(newRBTreeNode.parent==NIL){
99+
root=y;
100+
}else if(newRBTreeNode==newRBTreeNode.parent.leftChild){
101+
newRBTreeNode.parent.leftChild=y;
102+
}else{
103+
newRBTreeNode.parent.rightChild=y;
104+
}
105+
y.leftChild=newRBTreeNode;
106+
newRBTreeNode.parent=y;
107+
}
108+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package redBlackTree;
2+
3+
public class TestRedBlackTree {
4+
public static void main(String[] args) {
5+
RedBlackTree<Integer> rbt=new RedBlackTree<Integer>();
6+
rbt.insert(5);
7+
rbt.insert(9);
8+
rbt.insert(2);
9+
}
10+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package redBlackTree;
2+
3+
public class RedBlackTree {
4+
RBTree NIL;
5+
public class RBTree<T extends Comparable<T>>{
6+
RBTree leftChild;
7+
RBTree rightChild;
8+
RBTree parent;
9+
T key;
10+
boolean color;
11+
}
12+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package redBlackTree;
2+
3+
public class TestRedBlackTree {
4+
public static void main(String[] args) {
5+
RedBlackTree<Integer> rbt=new RedBlackTree<Integer>();
6+
rbt.insert(5);
7+
rbt.insert(9);
8+
rbt.insert(2);
9+
rbt
10+
}
11+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package rbtree;
2+
/**
3+
* Java 语言: 二叉查找树
4+
*
5+
* @author skywang
6+
* @date 2013/11/07
7+
*/
8+
public class RBTreeTest {
9+
10+
private static final int a[] = {10, 40, 30, 60, 90, 70, 20, 50, 80};
11+
private static final boolean mDebugInsert = false; // "插入"动作的检测开关(false,关闭;true,打开)
12+
private static final boolean mDebugDelete = false; // "删除"动作的检测开关(false,关闭;true,打开)
13+
14+
public static void main(String[] args) {
15+
int i, ilen = a.length;
16+
RBTree<Integer> tree=new RBTree<Integer>();
17+
18+
System.out.printf("== 原始数据: ");
19+
for(i=0; i<ilen; i++)
20+
System.out.printf("%d ", a[i]);
21+
System.out.printf("\n");
22+
23+
for(i=0; i<ilen; i++) {
24+
tree.insert(a[i]);
25+
// 设置mDebugInsert=true,测试"添加函数"
26+
if (mDebugInsert) {
27+
System.out.printf("== 添加节点: %d\n", a[i]);
28+
System.out.printf("== 树的详细信息: \n");
29+
tree.print();
30+
System.out.printf("\n");
31+
}
32+
}
33+
34+
System.out.printf("== 前序遍历: ");
35+
tree.preOrder();
36+
37+
System.out.printf("\n== 中序遍历: ");
38+
tree.inOrder();
39+
40+
System.out.printf("\n== 后序遍历: ");
41+
tree.postOrder();
42+
System.out.printf("\n");
43+
44+
System.out.printf("== 最小值: %s\n", tree.minimum());
45+
System.out.printf("== 最大值: %s\n", tree.maximum());
46+
System.out.printf("== 树的详细信息: \n");
47+
tree.print();
48+
System.out.printf("\n");
49+
50+
// 设置mDebugDelete=true,测试"删除函数"
51+
if (mDebugDelete) {
52+
for(i=0; i<ilen; i++)
53+
{
54+
tree.remove(a[i]);
55+
56+
System.out.printf("== 删除节点: %d\n", a[i]);
57+
System.out.printf("== 树的详细信息: \n");
58+
tree.print();
59+
System.out.printf("\n");
60+
}
61+
}
62+
63+
// 销毁二叉树
64+
tree.clear();
65+
}
66+
}

0 commit comments

Comments
 (0)