diff options
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.java | 7 | ||||
| -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.java | 115 |
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); -} |
