From dce16f2b8eb9e96cd66dd8fa6a414dd17f519128 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Sat, 2 Jun 2018 19:38:28 -0300 Subject: Add tree method --- base/src/main/java/bjc/utils/data/ITree.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'base/src/main/java') 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 { * predicate, or -1 if one doesn't exist. */ int revFind(Predicate> 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 pred) { + Toggle tog = new OneWayToggle<>(false, true); + + traverse(TreeLinearizationMethod.POSTORDER, (val) -> { + if(pred.test(val)) tog.get(); + }); + + return tog.get(); + } } -- cgit v1.2.3