More homogeneous ellipse density.
[master-thesis.git] / Parasitemia / ParasitemiaCore / KdTree.fs
index 4513208..3a60977 100644 (file)
@@ -65,10 +65,10 @@ type Tree<'a when 'a :> I2DCoords> =
         buildTreeFromSortedArray xSorted ySorted 1
 
     member this.Search (searchRegion: Region) : 'a list =
-        let rec valuesFrom (tree: Tree<'a>) : 'a list =
+        let rec valuesFrom (tree: Tree<'a>) (acc: 'a list) : 'a list =
             match tree with
-            | Node (_, part1, part2) -> (valuesFrom part1) @ (valuesFrom part2)
-            | Leaf v -> [v]
+            | Node (_, left, right) -> (valuesFrom right (valuesFrom left acc))
+            | Leaf v -> v :: acc
 
         let rec searchWithRegion (tree: Tree<'a>) (currentRegion: Region) (depth: int) : 'a list =
             match tree with
@@ -77,7 +77,7 @@ type Tree<'a when 'a :> I2DCoords> =
                 let valuesInRegion (region: Region) (treeRegion: Tree<'a>) =
                     if region.IsSub searchRegion
                     then
-                        valuesFrom treeRegion
+                        valuesFrom treeRegion []
                     elif region.Intersects searchRegion
                     then
                         searchWithRegion treeRegion region (depth + 1)