summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst
diff options
context:
space:
mode:
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/funcdata/bst')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTree.java7
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeLeaf.java (renamed from BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/TreeLeaf.java)6
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeNode.java (renamed from BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/TreeNode.java)10
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/ITreePart.java115
4 files changed, 14 insertions, 124 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTree.java b/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTree.java
index 7665797..3f65481 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTree.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTree.java
@@ -6,7 +6,8 @@ import java.util.List;
import java.util.function.Predicate;
import bjc.utils.funcdata.FunctionalList;
-import bjc.utils.funcdata.bst.ITreePart.TreeLinearizationMethod;
+import bjc.utils.funcdata.ITreePart;
+import bjc.utils.funcdata.ITreePart.TreeLinearizationMethod;
/**
* A binary search tree, with some mild support for functional traversal.
@@ -52,7 +53,7 @@ public class BinarySearchTree<T> {
nCount++;
if (root == null) {
- root = new TreeNode<T>(dat, null, null);
+ root = new BinarySearchTreeNode<T>(dat, null, null);
} else {
root.add(dat, comp);
}
@@ -74,7 +75,7 @@ public class BinarySearchTree<T> {
while ((piv - adj) >= 0 && (piv + adj) < elms.getSize()) {
if (root == null) {
- root = new TreeNode<T>(elms.getByIndex(piv), null, null);
+ root = new BinarySearchTreeNode<T>(elms.getByIndex(piv), null, null);
} else {
root.add(elms.getByIndex(piv + adj), comp);
root.add(elms.getByIndex(piv - adj), comp);
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/TreeLeaf.java b/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeLeaf.java
index e2f204a..02b9c7a 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/TreeLeaf.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeLeaf.java
@@ -5,6 +5,8 @@ import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Predicate;
+import bjc.utils.funcdata.ITreePart;
+
/**
* A leaf in a tree.
*
@@ -13,7 +15,7 @@ import java.util.function.Predicate;
* @param <T>
* The data stored in the tree.
*/
-public class TreeLeaf<T> implements ITreePart<T> {
+public class BinarySearchTreeLeaf<T> implements ITreePart<T> {
/**
* The data held in this tree leaf
*/
@@ -30,7 +32,7 @@ public class TreeLeaf<T> implements ITreePart<T> {
* @param dat
* The data for the leaf to hold.
*/
- public TreeLeaf(T dat) {
+ public BinarySearchTreeLeaf(T dat) {
data = dat;
}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/TreeNode.java b/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeNode.java
index e8c6c8b..30a9fbd 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/TreeNode.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeNode.java
@@ -7,6 +7,8 @@ import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Predicate;
+import bjc.utils.funcdata.ITreePart;
+
/**
* A binary node in a tree.
*
@@ -15,7 +17,7 @@ import java.util.function.Predicate;
* @param <T>
* The data type stored in the tree.
*/
-public class TreeNode<T> extends TreeLeaf<T> {
+public class BinarySearchTreeNode<T> extends BinarySearchTreeLeaf<T> {
/**
* The left child of this node
*/
@@ -36,7 +38,7 @@ public class TreeNode<T> extends TreeLeaf<T> {
* @param right
* The right child of this node.
*/
- public TreeNode(T data, ITreePart<T> left, ITreePart<T> right) {
+ public BinarySearchTreeNode(T data, ITreePart<T> left, ITreePart<T> right) {
super(data);
this.left = left;
this.right = right;
@@ -53,7 +55,7 @@ public class TreeNode<T> extends TreeLeaf<T> {
switch (comp.compare(data, dat)) {
case -1:
if (left == null) {
- left = new TreeNode<T>(dat, null, null);
+ left = new BinarySearchTreeNode<T>(dat, null, null);
} else {
left.add(dat, comp);
}
@@ -66,7 +68,7 @@ public class TreeNode<T> extends TreeLeaf<T> {
}
case 1:
if (right == null) {
- right = new TreeNode<T>(dat, null, null);
+ right = new BinarySearchTreeNode<T>(dat, null, null);
} else {
right.add(dat, comp);
}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/ITreePart.java b/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/ITreePart.java
deleted file mode 100644
index dfcfedd..0000000
--- a/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/ITreePart.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package bjc.utils.funcdata.bst;
-
-import java.util.Comparator;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-import java.util.function.Predicate;
-
-/**
- * A interface for the fundamental things that want to be part of a tree.
- *
- * @author ben
- *
- * @param <T>
- * The data contained in this part of the tree.
- */
-public interface ITreePart<T> {
- /**
- * Represents the ways to linearize a tree for traversal.
- *
- * @author ben
- *
- */
- public enum TreeLinearizationMethod {
- /**
- * Visit the left side of this tree part, the tree part itself, and
- * then the right part.
- */
- INORDER,
- /**
- * Visit the left side of this tree part, the right side, and then
- * the tree part itself.
- */
- POSTORDER,
- /**
- * Visit the tree part itself, then the left side of tthis tree
- * part and then the right part.
- */
- PREORDER
- }
-
- /**
- * Add a element below this tree part somewhere.
- *
- * @param dat
- * The element to add below this tree part
- * @param comp
- * The thing to use for comparing values to find where to
- * insert the tree part.
- */
- public void add(T dat, Comparator<T> comp);
-
- /**
- * Collapses this tree part into a single value. Does not change the
- * underlying tree.
- *
- * @param f
- * The function to use to transform data into mapped form.
- * @param bf
- * The function to use to collapse data in mapped form into
- * a single value.
- * @return A single value from collapsing the tree.
- */
- public <E> E collapse(Function<T, E> f, BiFunction<E, E, E> bf);
-
- /**
- * Check if this tre part or below it contains the specified data item
- *
- * @param data
- * The data item to look for.
- * @param cmp
- * The comparator to use to search for the data item
- * @return Whether or not the given item is contained in this tree part
- * or its children.
- */
- public boolean contains(T data, Comparator<T> cmp);
-
- /**
- * Get the data associated with this tree part.
- *
- * @return The data associated with this tree part.
- */
- public T data();
-
- /**
- * Remove the given node from this tree part and any of its children.
- *
- * @param dat
- * The data item to remove.
- * @param cmp
- * The comparator to use to search for the data item.
- */
- public void delete(T dat, Comparator<T> cmp);
-
- /**
- * Execute a directed walk through the tree.
- *
- * @param ds
- * The function to use to direct the walk through the tree.
- * @return Whether the directed walk finished successfully.
- */
- public boolean directedWalk(DirectedWalkFunction<T> ds);
-
- /**
- * Execute a provided function for each element of tree it succesfully
- * completes for
- *
- * @param tlm
- * The way to linearize the tree for executing
- * @param c
- * The function to apply to each element, where it returning
- * false terminates traversal early
- * @return Whether the traversal finished succesfully
- */
- public boolean forEach(TreeLinearizationMethod tlm, Predicate<T> c);
-}