diff options
Diffstat (limited to 'Algorithms/Part-I/5-KdTrees')
| -rw-r--r-- | Algorithms/Part-I/5-KdTrees/KdTree.java | 13 | 
1 files changed, 10 insertions, 3 deletions
| diff --git a/Algorithms/Part-I/5-KdTrees/KdTree.java b/Algorithms/Part-I/5-KdTrees/KdTree.java index 73d9a90..bcf4609 100644 --- a/Algorithms/Part-I/5-KdTrees/KdTree.java +++ b/Algorithms/Part-I/5-KdTrees/KdTree.java @@ -100,7 +100,7 @@ public class KdTree      // does the tree contain the point p?      public boolean contains(Point2D p)      { -        if (root == null) return false; +        if ((p == null) || (root == null)) return false;          return get(root, p, true);      } @@ -113,7 +113,11 @@ public class KdTree              cmp = Point2D.Y_ORDER.compare(p, n.p);          if (cmp < 0) +        { +            if (n.left == null) return false;              return get(n.left, p, !vsplit); +        } +        if (n.right == null) return false;          return get(n.right, p, !vsplit);      } @@ -163,6 +167,8 @@ public class KdTree      {          Stack<Point2D> stack = new Stack<Point2D>(); +        if ((rect == null) || (root == null)) return stack; +          range(root, rect, stack, true);          return stack; @@ -191,10 +197,11 @@ public class KdTree      // a nearest neighbor in the tree to p; null if tree is empty      public Point2D nearest(Point2D p)      { -        if (p == null) return null; -        if (root == null) return null; +        if ((p == null) || (root == null)) return null; +          NearestChampion ncp = new NearestChampion(null, Double.MAX_VALUE);          nearest(root, p, ncp, true); +          return ncp.p;      } | 
