diff --git a/Algorithm/.classpath b/java/.classpath
similarity index 98%
rename from Algorithm/.classpath
rename to java/.classpath
index 4c3b63b..27940d2 100644
--- a/Algorithm/.classpath
+++ b/java/.classpath
@@ -1,11 +1,11 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Algorithm/.gitignore b/java/.gitignore
similarity index 100%
rename from Algorithm/.gitignore
rename to java/.gitignore
diff --git a/Algorithm/.project b/java/.project
similarity index 95%
rename from Algorithm/.project
rename to java/.project
index 62a9089..dbc8543 100644
--- a/Algorithm/.project
+++ b/java/.project
@@ -1,17 +1,17 @@
-
-
- Algorithm
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
+
+
+ Algorithm
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/Algorithm/.settings/org.eclipse.jdt.core.prefs b/java/.settings/org.eclipse.jdt.core.prefs
similarity index 98%
rename from Algorithm/.settings/org.eclipse.jdt.core.prefs
rename to java/.settings/org.eclipse.jdt.core.prefs
index bb35fa0..3a21537 100644
--- a/Algorithm/.settings/org.eclipse.jdt.core.prefs
+++ b/java/.settings/org.eclipse.jdt.core.prefs
@@ -1,11 +1,11 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Algorithm/src/main/java/binarytree/AVLTree.java b/java/src/main/java/binarytree/AVLTree.java
similarity index 91%
rename from Algorithm/src/main/java/binarytree/AVLTree.java
rename to java/src/main/java/binarytree/AVLTree.java
index cfa634b..c7188c6 100644
--- a/Algorithm/src/main/java/binarytree/AVLTree.java
+++ b/java/src/main/java/binarytree/AVLTree.java
@@ -1,15 +1,15 @@
-/**
-* AVLTree.java
-*/
-package binarytree;
-
-/**
- *
- * @author LiuChen
- * @date 2016年11月25日 下午4:39:21
- *
- */
-
-public class AVLTree extends BinaryTree {
-
-}
+/**
+* AVLTree.java
+*/
+package binarytree;
+
+/**
+ *
+ * @author LiuChen
+ * @date 2016年11月25日 下午4:39:21
+ *
+ */
+
+public class AVLTree extends BinaryTree {
+
+}
diff --git a/Algorithm/src/main/java/binarytree/BinarySearchTree.java b/java/src/main/java/binarytree/BinarySearchTree.java
similarity index 96%
rename from Algorithm/src/main/java/binarytree/BinarySearchTree.java
rename to java/src/main/java/binarytree/BinarySearchTree.java
index d902d1c..41c747d 100644
--- a/Algorithm/src/main/java/binarytree/BinarySearchTree.java
+++ b/java/src/main/java/binarytree/BinarySearchTree.java
@@ -1,119 +1,119 @@
-/**
-* BinarySearchTree.java
-*/
-package binarytree;
-
-/**
- *
- * @author LiuChen
- * @date 2016年11月24日 下午4:34:20
- *
- */
-
-public class BinarySearchTree extends BinaryTree {
-
- /**
- * Insert a node into binary search tree.
- *
- * @param value
- * @return
- */
- public BinarySearchTree insertSearch(Integer value) {
- BinaryTreeNode newNode = new BinaryTreeNode(value);
- if(this.root == null) {
- this.root = newNode;
- return this;
- }
- BinaryTreeNode temp = this.root;
- while(temp != null) {
- if(temp.getValue() == value) {
- return this;
- } else if(temp.getValue() < value) {
- if(temp.getRightNode() == null) {
- temp.setRightNode(newNode);
- break;
- }
- temp = temp.getRightNode();
- } else {
- if(temp.getLeftNode() == null) {
- temp.setLeftNode(newNode);
- break;
- }
- temp = temp.getLeftNode();
- }
- }
- return this;
- }
-
- /**
- * Remove node
- *
- * @param node
- * @param value
- * @return
- */
- public BinaryTreeNode remove(BinaryTreeNode node, Integer value) {
- if(node == null) {
- return null;
- }
- if(node.getValue() > value) {
- node.setLeftNode(remove(node.getLeftNode(), value));
- }
- if(node.getValue() < value) {
- node.setRightNode(remove(node.getRightNode(), value));
- }
- if(node.getValue() == value) {
- if(node.getLeftNode() != null && node.getRightNode() != null) { // Two children
-// node = TODO
- } else { // Single child or no child
- node = node.getLeftNode() == null ? node.getRightNode() : node.getLeftNode();
- }
- }
-
- return node;
- }
-
- /**
- * Search parent node by value.
- *
- * @param node
- * @param value
- * @return
- */
- public BinaryTreeNode searchParentNode(BinaryTreeNode node, Integer value) {
- if(node == null || node.getValue() == value) { // is null or is root.
- return null;
- }
- if(node.getLeftNode() != null && node.getLeftNode().getValue() == value) { // Left child's value equals to
- return node;
- }
- if(node.getRightNode() != null && node.getRightNode().getValue() == value) { // Right child's value equals to
- return node;
- }
- if(node.getValue() > value) { // Search in left child tree.
- return searchParentNode(node.getLeftNode(), value);
- } else { // Search in right child tree.
- return searchParentNode(node.getRightNode(), value);
- }
- }
-
- /**
- * Search node by value
- *
- * @param node
- * @param value
- * @return
- */
- public BinaryTreeNode searchNode(BinaryTreeNode node, Integer value) {
- if(node == null) {
- return null;
- }
- if(node.getValue() == value) {
- return node;
- } else if(node.getValue() < value) {
- return searchNode(node.getRightNode(), value);
- } else {
- return searchNode(node.getLeftNode(), value);
- }
- }
-}
+/**
+* BinarySearchTree.java
+*/
+package binarytree;
+
+/**
+ *
+ * @author LiuChen
+ * @date 2016年11月24日 下午4:34:20
+ *
+ */
+
+public class BinarySearchTree extends BinaryTree {
+
+ /**
+ * Insert a node into binary search tree.
+ *
+ * @param value
+ * @return
+ */
+ public BinarySearchTree insertSearch(Integer value) {
+ BinaryTreeNode newNode = new BinaryTreeNode(value);
+ if(this.root == null) {
+ this.root = newNode;
+ return this;
+ }
+ BinaryTreeNode temp = this.root;
+ while(temp != null) {
+ if(temp.getValue() == value) {
+ return this;
+ } else if(temp.getValue() < value) {
+ if(temp.getRightNode() == null) {
+ temp.setRightNode(newNode);
+ break;
+ }
+ temp = temp.getRightNode();
+ } else {
+ if(temp.getLeftNode() == null) {
+ temp.setLeftNode(newNode);
+ break;
+ }
+ temp = temp.getLeftNode();
+ }
+ }
+ return this;
+ }
+
+ /**
+ * Remove node
+ *
+ * @param node
+ * @param value
+ * @return
+ */
+ public BinaryTreeNode remove(BinaryTreeNode node, Integer value) {
+ if(node == null) {
+ return null;
+ }
+ if(node.getValue() > value) {
+ node.setLeftNode(remove(node.getLeftNode(), value));
+ }
+ if(node.getValue() < value) {
+ node.setRightNode(remove(node.getRightNode(), value));
+ }
+ if(node.getValue() == value) {
+ if(node.getLeftNode() != null && node.getRightNode() != null) { // Two children
+// node = TODO
+ } else { // Single child or no child
+ node = node.getLeftNode() == null ? node.getRightNode() : node.getLeftNode();
+ }
+ }
+
+ return node;
+ }
+
+ /**
+ * Search parent node by value.
+ *
+ * @param node
+ * @param value
+ * @return
+ */
+ public BinaryTreeNode searchParentNode(BinaryTreeNode node, Integer value) {
+ if(node == null || node.getValue() == value) { // is null or is root.
+ return null;
+ }
+ if(node.getLeftNode() != null && node.getLeftNode().getValue() == value) { // Left child's value equals to
+ return node;
+ }
+ if(node.getRightNode() != null && node.getRightNode().getValue() == value) { // Right child's value equals to
+ return node;
+ }
+ if(node.getValue() > value) { // Search in left child tree.
+ return searchParentNode(node.getLeftNode(), value);
+ } else { // Search in right child tree.
+ return searchParentNode(node.getRightNode(), value);
+ }
+ }
+
+ /**
+ * Search node by value
+ *
+ * @param node
+ * @param value
+ * @return
+ */
+ public BinaryTreeNode searchNode(BinaryTreeNode node, Integer value) {
+ if(node == null) {
+ return null;
+ }
+ if(node.getValue() == value) {
+ return node;
+ } else if(node.getValue() < value) {
+ return searchNode(node.getRightNode(), value);
+ } else {
+ return searchNode(node.getLeftNode(), value);
+ }
+ }
+}
diff --git a/Algorithm/src/main/java/binarytree/BinaryTree.java b/java/src/main/java/binarytree/BinaryTree.java
similarity index 96%
rename from Algorithm/src/main/java/binarytree/BinaryTree.java
rename to java/src/main/java/binarytree/BinaryTree.java
index 84e5b7e..86da800 100644
--- a/Algorithm/src/main/java/binarytree/BinaryTree.java
+++ b/java/src/main/java/binarytree/BinaryTree.java
@@ -1,121 +1,121 @@
-/**
-* BinaryTree.java
-*/
-package binarytree;
-
-/**
- * Binary tree
- * @author LiuChen
- * @date 2016年11月24日 上午11:05:22
- *
- */
-
-public class BinaryTree {
- protected BinaryTreeNode root;
-
- public BinaryTree() {
- this.root = null;
- }
-
- public BinaryTree(T value) {
- this.root = new BinaryTreeNode(value);
- }
-
- public BinaryTreeNode getRoot() {
- return this.root;
- }
-
- /**
- * Insert a node into tree.
- *
- * @param value
- * @return
- */
- public BinaryTree insert(T value) {
- BinaryTreeNode newNode = new BinaryTreeNode(value);
- if(this.root == null) {
- this.root = newNode;
- return this;
- }
- BinaryTreeNode temp = this.root;
- while(temp.getLeftNode() != null) {
- if(temp.getRightNode() == null) {
- temp.setRightNode(newNode);
- return this;
- }
- temp = temp.getLeftNode();
- }
- temp.setLeftNode(newNode);
- return this;
- }
-
- /**
- * Get node count.
- * @param node
- * @return
- */
- public int getNodeCount(BinaryTreeNode node) {
- if(node == null) {
- return 0;
- }
- return getNodeCount(node.getLeftNode()) + getNodeCount(node.getRightNode()) + 1;
- }
-
- /**
- * Get tree's depth.
- * @param node
- * @return
- */
- public int getDepth(BinaryTreeNode node) {
- if(node == null) {
- return 0;
- }
- int depthLeft = getDepth(node.getLeftNode());
- int depthRight = getDepth(node.getRightNode());
-
- return depthLeft > depthRight ? (depthLeft + 1) : (depthRight + 1);
- }
-
- public void visit(BinaryTreeNode node) {
- System.out.print("NODE[" + node.getValue() + "]-->");
- }
-
- /**
- * PreOrderTraverse
- * @param root
- */
- public void preOrderTraverse(BinaryTreeNode root) {
- if(root == null) {
- return;
- }
- this.visit(root); // visit root node
- preOrderTraverse(root.getLeftNode()); // visit left child tree
- preOrderTraverse(root.getRightNode()); // visit right child tree
- }
-
- /**
- * InOrderTraverse
- * @param root
- */
- public void inOrderTraverse(BinaryTreeNode root) {
- if(root == null) {
- return;
- }
- inOrderTraverse(root.getLeftNode()); // visit left child tree
- this.visit(root); // visit root node
- inOrderTraverse(root.getRightNode()); // visit right child tree
- }
-
- /**
- * PostOrderTraverse
- * @param root
- */
- public void postOrderTraverse(BinaryTreeNode root) {
- if(root == null) {
- return;
- }
- postOrderTraverse(root.getLeftNode()); // visit left child tree
- postOrderTraverse(root.getRightNode()); // visit right child tree
- this.visit(root); // visit root node
- }
-}
+/**
+* BinaryTree.java
+*/
+package binarytree;
+
+/**
+ * Binary tree
+ * @author LiuChen
+ * @date 2016年11月24日 上午11:05:22
+ *
+ */
+
+public class BinaryTree {
+ protected BinaryTreeNode root;
+
+ public BinaryTree() {
+ this.root = null;
+ }
+
+ public BinaryTree(T value) {
+ this.root = new BinaryTreeNode(value);
+ }
+
+ public BinaryTreeNode getRoot() {
+ return this.root;
+ }
+
+ /**
+ * Insert a node into tree.
+ *
+ * @param value
+ * @return
+ */
+ public BinaryTree insert(T value) {
+ BinaryTreeNode newNode = new BinaryTreeNode(value);
+ if(this.root == null) {
+ this.root = newNode;
+ return this;
+ }
+ BinaryTreeNode temp = this.root;
+ while(temp.getLeftNode() != null) {
+ if(temp.getRightNode() == null) {
+ temp.setRightNode(newNode);
+ return this;
+ }
+ temp = temp.getLeftNode();
+ }
+ temp.setLeftNode(newNode);
+ return this;
+ }
+
+ /**
+ * Get node count.
+ * @param node
+ * @return
+ */
+ public int getNodeCount(BinaryTreeNode node) {
+ if(node == null) {
+ return 0;
+ }
+ return getNodeCount(node.getLeftNode()) + getNodeCount(node.getRightNode()) + 1;
+ }
+
+ /**
+ * Get tree's depth.
+ * @param node
+ * @return
+ */
+ public int getDepth(BinaryTreeNode node) {
+ if(node == null) {
+ return 0;
+ }
+ int depthLeft = getDepth(node.getLeftNode());
+ int depthRight = getDepth(node.getRightNode());
+
+ return depthLeft > depthRight ? (depthLeft + 1) : (depthRight + 1);
+ }
+
+ public void visit(BinaryTreeNode node) {
+ System.out.print("NODE[" + node.getValue() + "]-->");
+ }
+
+ /**
+ * PreOrderTraverse
+ * @param root
+ */
+ public void preOrderTraverse(BinaryTreeNode root) {
+ if(root == null) {
+ return;
+ }
+ this.visit(root); // visit root node
+ preOrderTraverse(root.getLeftNode()); // visit left child tree
+ preOrderTraverse(root.getRightNode()); // visit right child tree
+ }
+
+ /**
+ * InOrderTraverse
+ * @param root
+ */
+ public void inOrderTraverse(BinaryTreeNode root) {
+ if(root == null) {
+ return;
+ }
+ inOrderTraverse(root.getLeftNode()); // visit left child tree
+ this.visit(root); // visit root node
+ inOrderTraverse(root.getRightNode()); // visit right child tree
+ }
+
+ /**
+ * PostOrderTraverse
+ * @param root
+ */
+ public void postOrderTraverse(BinaryTreeNode root) {
+ if(root == null) {
+ return;
+ }
+ postOrderTraverse(root.getLeftNode()); // visit left child tree
+ postOrderTraverse(root.getRightNode()); // visit right child tree
+ this.visit(root); // visit root node
+ }
+}
diff --git a/Algorithm/src/main/java/binarytree/BinaryTreeNode.java b/java/src/main/java/binarytree/BinaryTreeNode.java
similarity index 95%
rename from Algorithm/src/main/java/binarytree/BinaryTreeNode.java
rename to java/src/main/java/binarytree/BinaryTreeNode.java
index 29df063..900a6ae 100644
--- a/Algorithm/src/main/java/binarytree/BinaryTreeNode.java
+++ b/java/src/main/java/binarytree/BinaryTreeNode.java
@@ -1,53 +1,53 @@
-/**
-* BinaryTreeNode.java
-*/
-package binarytree;
-
-/**
- * The node of binary tree.
- * @author LiuChen
- * @date 2016年11月24日 上午11:03:42
- *
- */
-
-public class BinaryTreeNode {
- private T value;
- private BinaryTreeNode leftNode;
- private BinaryTreeNode rightNode;
-
- public BinaryTreeNode() {
- this.leftNode = null;
- this.rightNode = null;
- }
-
- public BinaryTreeNode(T value) {
- this.value = value;
- this.leftNode = null;
- this.rightNode = null;
- }
-
- public T getValue() {
- return value;
- }
- public void setValue(T value) {
- this.value = value;
- }
- public BinaryTreeNode getLeftNode() {
- return leftNode;
- }
- public void setLeftNode(BinaryTreeNode leftNode) {
- this.leftNode = leftNode;
- }
- public BinaryTreeNode getRightNode() {
- return rightNode;
- }
- public void setRightNode(BinaryTreeNode rightNode) {
- this.rightNode = rightNode;
- }
-
- @Override
- public String toString() {
- return "BinaryTreeNode [value=" + value + ", leftNode=" + leftNode
- + ", rightNode=" + rightNode + "]";
- }
-}
+/**
+* BinaryTreeNode.java
+*/
+package binarytree;
+
+/**
+ * The node of binary tree.
+ * @author LiuChen
+ * @date 2016年11月24日 上午11:03:42
+ *
+ */
+
+public class BinaryTreeNode {
+ private T value;
+ private BinaryTreeNode leftNode;
+ private BinaryTreeNode rightNode;
+
+ public BinaryTreeNode() {
+ this.leftNode = null;
+ this.rightNode = null;
+ }
+
+ public BinaryTreeNode(T value) {
+ this.value = value;
+ this.leftNode = null;
+ this.rightNode = null;
+ }
+
+ public T getValue() {
+ return value;
+ }
+ public void setValue(T value) {
+ this.value = value;
+ }
+ public BinaryTreeNode getLeftNode() {
+ return leftNode;
+ }
+ public void setLeftNode(BinaryTreeNode leftNode) {
+ this.leftNode = leftNode;
+ }
+ public BinaryTreeNode getRightNode() {
+ return rightNode;
+ }
+ public void setRightNode(BinaryTreeNode rightNode) {
+ this.rightNode = rightNode;
+ }
+
+ @Override
+ public String toString() {
+ return "BinaryTreeNode [value=" + value + ", leftNode=" + leftNode
+ + ", rightNode=" + rightNode + "]";
+ }
+}
diff --git a/Algorithm/src/main/java/sort/BubbleSort.java b/java/src/main/java/sort/BubbleSort.java
similarity index 90%
rename from Algorithm/src/main/java/sort/BubbleSort.java
rename to java/src/main/java/sort/BubbleSort.java
index 6b6d428..c06c739 100644
--- a/Algorithm/src/main/java/sort/BubbleSort.java
+++ b/java/src/main/java/sort/BubbleSort.java
@@ -1,15 +1,15 @@
-/**
-* BubbleSort.java
-*/
-package sort;
-
-/**
- *
- * @author LiuChen
- * @date 2016年11月28日 下午3:05:55
- *
- */
-
-public class BubbleSort {
-
-}
+/**
+* BubbleSort.java
+*/
+package sort;
+
+/**
+ *
+ * @author LiuChen
+ * @date 2016年11月28日 下午3:05:55
+ *
+ */
+
+public class BubbleSort {
+
+}
diff --git a/Algorithm/src/test/java/test/binarytree/UnitTest.java b/java/src/test/java/test/binarytree/UnitTest.java
similarity index 95%
rename from Algorithm/src/test/java/test/binarytree/UnitTest.java
rename to java/src/test/java/test/binarytree/UnitTest.java
index af31af1..5d87e65 100644
--- a/Algorithm/src/test/java/test/binarytree/UnitTest.java
+++ b/java/src/test/java/test/binarytree/UnitTest.java
@@ -1,39 +1,39 @@
-/**
-* UnitTest.java
-*/
-package test.binarytree;
-
-import org.junit.Test;
-
-import binarytree.BinaryTree;
-
-/**
- *
- * @author LiuChen
- * @date 2016年11月24日 下午2:35:16
- *
- */
-
-public class UnitTest {
- public static BinaryTree iTree = new BinaryTree();
- static {
- iTree.insert("a").insert("b").insert("c").insert("d").insert("e").insert("f").insert("g").insert("h").insert("i");
- }
-
- @Test
- public void testTraverse() {
- iTree.preOrderTraverse(iTree.getRoot());System.out.println();
- iTree.inOrderTraverse(iTree.getRoot());System.out.println();
- iTree.postOrderTraverse(iTree.getRoot());System.out.println();
- }
-
- @Test
- public void testGetNodeCount() {
- System.out.println(iTree.getNodeCount(iTree.getRoot()));
- }
-
- @Test
- public void testGetDepth() {
- System.out.println(iTree.getDepth(iTree.getRoot()));
- }
-}
+/**
+* UnitTest.java
+*/
+package test.binarytree;
+
+import org.junit.Test;
+
+import binarytree.BinaryTree;
+
+/**
+ *
+ * @author LiuChen
+ * @date 2016年11月24日 下午2:35:16
+ *
+ */
+
+public class UnitTest {
+ public static BinaryTree iTree = new BinaryTree();
+ static {
+ iTree.insert("a").insert("b").insert("c").insert("d").insert("e").insert("f").insert("g").insert("h").insert("i");
+ }
+
+ @Test
+ public void testTraverse() {
+ iTree.preOrderTraverse(iTree.getRoot());System.out.println();
+ iTree.inOrderTraverse(iTree.getRoot());System.out.println();
+ iTree.postOrderTraverse(iTree.getRoot());System.out.println();
+ }
+
+ @Test
+ public void testGetNodeCount() {
+ System.out.println(iTree.getNodeCount(iTree.getRoot()));
+ }
+
+ @Test
+ public void testGetDepth() {
+ System.out.println(iTree.getDepth(iTree.getRoot()));
+ }
+}
diff --git a/Algorithm/src/test/java/test/binarytree/search/UnitTest.java b/java/src/test/java/test/binarytree/search/UnitTest.java
similarity index 96%
rename from Algorithm/src/test/java/test/binarytree/search/UnitTest.java
rename to java/src/test/java/test/binarytree/search/UnitTest.java
index d260a3a..894afeb 100644
--- a/Algorithm/src/test/java/test/binarytree/search/UnitTest.java
+++ b/java/src/test/java/test/binarytree/search/UnitTest.java
@@ -1,43 +1,43 @@
-/**
-* UnitTest.java
-*/
-package test.binarytree.search;
-
-import org.junit.Test;
-
-import binarytree.BinarySearchTree;
-
-/**
- *
- * @author LiuChen
- * @date 2016年11月24日 下午4:38:46
- *
- */
-
-public class UnitTest {
- private static BinarySearchTree iTree = new BinarySearchTree();
-
- static {
- iTree.insertSearch(6).insertSearch(3).insertSearch(4).insertSearch(5).insertSearch(1).insertSearch(2);
-// for(int i=0; i<1000; i++) {
-// iTree.insertSearch(Double.valueOf(Math.floor(Math.random()*1000)).intValue());
-// }
- }
-
- @Test
- public void testTraverse() {
- iTree.preOrderTraverse(iTree.getRoot());System.out.println();
- iTree.inOrderTraverse(iTree.getRoot());System.out.println();
- iTree.postOrderTraverse(iTree.getRoot());System.out.println();
- }
-
- @Test
- public void testSearch() {
- System.out.println(iTree.searchNode(iTree.getRoot(), 123));
- }
-
- @Test
- public void testSearchParent() {
- System.out.println(iTree.searchParentNode(iTree.getRoot(), 7));
- }
-}
+/**
+* UnitTest.java
+*/
+package test.binarytree.search;
+
+import org.junit.Test;
+
+import binarytree.BinarySearchTree;
+
+/**
+ *
+ * @author LiuChen
+ * @date 2016年11月24日 下午4:38:46
+ *
+ */
+
+public class UnitTest {
+ private static BinarySearchTree iTree = new BinarySearchTree();
+
+ static {
+ iTree.insertSearch(6).insertSearch(3).insertSearch(4).insertSearch(5).insertSearch(1).insertSearch(2);
+// for(int i=0; i<1000; i++) {
+// iTree.insertSearch(Double.valueOf(Math.floor(Math.random()*1000)).intValue());
+// }
+ }
+
+ @Test
+ public void testTraverse() {
+ iTree.preOrderTraverse(iTree.getRoot());System.out.println();
+ iTree.inOrderTraverse(iTree.getRoot());System.out.println();
+ iTree.postOrderTraverse(iTree.getRoot());System.out.println();
+ }
+
+ @Test
+ public void testSearch() {
+ System.out.println(iTree.searchNode(iTree.getRoot(), 123));
+ }
+
+ @Test
+ public void testSearchParent() {
+ System.out.println(iTree.searchParentNode(iTree.getRoot(), 7));
+ }
+}
diff --git a/python/mergeSort.py b/python/mergeSort.py
new file mode 100644
index 0000000..9931b74
--- /dev/null
+++ b/python/mergeSort.py
@@ -0,0 +1,38 @@
+# mergeSort.py
+import math
+max = 10000000
+
+def merge_sort(A, p, r):
+ if p < r:
+ q = math.floor((p + r) / 2)
+ merge_sort(A, p, q)
+ merge_sort(A, q + 1, r)
+ merge(A, p, q, r)
+
+def merge(A, p, q, r):
+ L = A[p : q + 1]
+ R = A[q + 1 : r + 1]
+ L.append(max)
+ R.append(max)
+ i = 0
+ j = 0
+ for k in range(p, r + 1):
+ if L[i] <= R[j]:
+ A[k] = L[i]
+ i = i + 1
+ else:
+ A[k] = R[j]
+ j = j + 1
+ L.pop()
+ R.pop()
+ print(p, q, r, L, '->', R, '->', A)
+
+# A = [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
+# A = [9, 7 ,5, 3, 1, 10, 8, 6, 4, 2]
+A = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
+merge_sort(A, 0, 9)
+print(A)
+
+# B = [9, 10, 7]
+# merge(B, 0, 2, 3)
+# print(B)
\ No newline at end of file