summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-02 19:38:28 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-02 19:38:28 -0300
commitdce16f2b8eb9e96cd66dd8fa6a414dd17f519128 (patch)
treea263e3b885d41c4a72e6c7995c6ad0b941f722b8 /base/src/main/java/bjc
parente68d36aafd8a10fa52ad263045c960747e754b5e (diff)
Add tree method
Diffstat (limited to 'base/src/main/java/bjc')
-rw-r--r--base/src/main/java/bjc/utils/data/ITree.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/base/src/main/java/bjc/utils/data/ITree.java b/base/src/main/java/bjc/utils/data/ITree.java
index 237438f..bbeaa3f 100644
--- a/base/src/main/java/bjc/utils/data/ITree.java
+++ b/base/src/main/java/bjc/utils/data/ITree.java
@@ -232,4 +232,22 @@ public interface ITree<ContainedType> {
* predicate, or -1 if one doesn't exist.
*/
int revFind(Predicate<ITree<ContainedType>> childPred);
+
+ /**
+ * Check if this tree contains any nodes that satisfy the predicate.
+ *
+ * @param pred
+ * The predicate to look for.
+ *
+ * @return Whether or not any items satisfied the predicate.
+ */
+ default boolean containsMatching(Predicate<ContainedType> pred) {
+ Toggle<Boolean> tog = new OneWayToggle<>(false, true);
+
+ traverse(TreeLinearizationMethod.POSTORDER, (val) -> {
+ if(pred.test(val)) tog.get();
+ });
+
+ return tog.get();
+ }
}