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.java11
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeLeaf.java12
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeNode.java27
3 files changed, 50 insertions, 0 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 ec0e4df..fa92f85 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
@@ -39,6 +39,10 @@ public class BinarySearchTree<T> {
* The thing to use for comparing elements
*/
public BinarySearchTree(Comparator<T> cmp) {
+ if (cmp == null) {
+ throw new NullPointerException("Comparator must not be null");
+ }
+
elementCount = 0;
comparator = cmp;
}
@@ -169,6 +173,13 @@ public class BinarySearchTree<T> {
*/
public void traverse(TreeLinearizationMethod linearizationMethod,
Predicate<T> traversalPredicate) {
+ if (linearizationMethod == null) {
+ throw new NullPointerException(
+ "Linearization method must not be null");
+ } else if (traversalPredicate == null) {
+ throw new NullPointerException("Predicate must not be nulls");
+ }
+
rootElement.forEach(linearizationMethod, traversalPredicate);
}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeLeaf.java b/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeLeaf.java
index 7e31328..d2f9013 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeLeaf.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeLeaf.java
@@ -55,6 +55,10 @@ public class BinarySearchTreeLeaf<T> implements ITreePart<T> {
@Override
public <E> E collapse(Function<T, E> leafTransformer,
BiFunction<E, E, E> branchCollapser) {
+ if (leafTransformer == null) {
+ throw new NullPointerException("Transformer must not be null");
+ }
+
return leafTransformer.apply(data);
}
@@ -101,6 +105,10 @@ public class BinarySearchTreeLeaf<T> implements ITreePart<T> {
*/
@Override
public boolean directedWalk(DirectedWalkFunction<T> treeWalker) {
+ if (treeWalker == null) {
+ throw new NullPointerException("Tree walker must not be null");
+ }
+
switch (treeWalker.walk(data)) {
case SUCCESS:
return true;
@@ -119,6 +127,10 @@ public class BinarySearchTreeLeaf<T> implements ITreePart<T> {
@Override
public boolean forEach(TreeLinearizationMethod linearizationMethod,
Predicate<T> traversalPredicate) {
+ if (traversalPredicate == null) {
+ throw new NullPointerException("Predicate must not be null");
+ }
+
return traversalPredicate.test(data);
}
}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeNode.java b/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeNode.java
index 77bb196..09a4912 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeNode.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcdata/bst/BinarySearchTreeNode.java
@@ -51,6 +51,10 @@ public class BinarySearchTreeNode<T> extends BinarySearchTreeLeaf<T> {
*/
@Override
public void add(T element, Comparator<T> comparator) {
+ if (comparator == null) {
+ throw new NullPointerException("Comparator must not be null");
+ }
+
switch (comparator.compare(data, element)) {
case -1:
if (leftBranch == null) {
@@ -79,6 +83,10 @@ public class BinarySearchTreeNode<T> extends BinarySearchTreeLeaf<T> {
@Override
public <E> E collapse(Function<T, E> nodeCollapser,
BiFunction<E, E, E> branchCollapser) {
+ if (nodeCollapser == null || branchCollapser == null) {
+ throw new NullPointerException("Collapser must not be null");
+ }
+
E collapsedNode = nodeCollapser.apply(data);
if (leftBranch != null) {
@@ -112,6 +120,10 @@ public class BinarySearchTreeNode<T> extends BinarySearchTreeLeaf<T> {
@Override
public boolean contains(T element, Comparator<T> comparator) {
+ if (comparator == null) {
+ throw new NullPointerException("Comparator must not be null");
+ }
+
return directedWalk(currentElement -> {
switch (comparator.compare(element, currentElement)) {
case -1:
@@ -128,6 +140,10 @@ public class BinarySearchTreeNode<T> extends BinarySearchTreeLeaf<T> {
@Override
public void delete(T element, Comparator<T> comparator) {
+ if (comparator == null) {
+ throw new NullPointerException("Comparator must not be null");
+ }
+
directedWalk(currentElement -> {
switch (comparator.compare(data, element)) {
case -1:
@@ -145,6 +161,10 @@ public class BinarySearchTreeNode<T> extends BinarySearchTreeLeaf<T> {
@Override
public boolean directedWalk(DirectedWalkFunction<T> treeWalker) {
+ if (treeWalker == null) {
+ throw new NullPointerException("Walker must not be null");
+ }
+
switch (treeWalker.walk(data)) {
case SUCCESS:
return true;
@@ -162,6 +182,13 @@ public class BinarySearchTreeNode<T> extends BinarySearchTreeLeaf<T> {
@Override
public boolean forEach(TreeLinearizationMethod linearizationMethod,
Predicate<T> traversalPredicate) {
+ if (linearizationMethod == null) {
+ throw new NullPointerException(
+ "Linearization method must not be null");
+ } else if (traversalPredicate == null) {
+ throw new NullPointerException("Predicate must not be null");
+ }
+
switch (linearizationMethod) {
case PREORDER:
return preorderTraverse(linearizationMethod,