diff --git a/05/src/main/java/ch/zhaw/ads/TreeTraversal.java b/05/src/main/java/ch/zhaw/ads/TreeTraversal.java index 8ba0910..b9016c6 100644 --- a/05/src/main/java/ch/zhaw/ads/TreeTraversal.java +++ b/05/src/main/java/ch/zhaw/ads/TreeTraversal.java @@ -66,4 +66,28 @@ public class TreeTraversal> implements Traversal { } } + public void interval(Comparable min, Comparable max, Visitor v) { + interval(root, min, max, v); + } + + private void interval(TreeNode node, Comparable min, Comparable max, Visitor v) { + if (node != null) { + + // only visit nodes that are in the interval + if (node >= min && node <= max) { + v.visit(root.element); + } + + // go in the direction of lower values (so left) until the min is hit + if (node >= min) { + interval(node.left, min, max, v); + } + + // go in the direction of higher values (so right) until the max is hit + if (node <= max) { + interval(node.right, min, max, v); + } + } + } + }