diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-02 19:38:28 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-02 19:38:28 -0300 |
| commit | dce16f2b8eb9e96cd66dd8fa6a414dd17f519128 (patch) | |
| tree | a263e3b885d41c4a72e6c7995c6ad0b941f722b8 /base/src/main/java/bjc/utils/data/ITree.java | |
| parent | e68d36aafd8a10fa52ad263045c960747e754b5e (diff) | |
Add tree method
Diffstat (limited to 'base/src/main/java/bjc/utils/data/ITree.java')
| -rw-r--r-- | base/src/main/java/bjc/utils/data/ITree.java | 18 |
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(); + } } |
