Exemple #1
0
 def __init__(self, locations, xy=None, randomize=True):
     self.size = len(locations)
     if xy is not None:
         self.xy = xy
     else:
         self.xy = True
     start = 0
     end = self.size - 1
     if self.size % 2 == 0:
         median = self.size / 2 - 1
     else:
         median = self.size / 2
     if start < end:
         self.loc = Location.partition_around_median(locations, self.xy, randomize)
         if start < median:
             self.left = TwoDTree(locations[:median], not self.xy, randomize)
         else:
             self.left = None
         if median < end:
             self.right = TwoDTree(locations[median + 1:], not self.xy, randomize)
         else:
             self.right = None
     elif start == end:
         self.loc = locations[start]
         self.left = self.right = None
     else:
         self.loc = self.left = self.right = None