class kdtree:
def __init__(self, dimension =2,index=0):
self.dimension = dimension
self.index = index
self.split = None
def addPoint(self,thePoint,theParent=None):
"""Include another point in the kD-tree."""
if self.split is None:
#you are now a end
self.split = thePoint
print "at a edge %s. Node%s" % (self.split, self)
self.parent=theParent
self.left = kdtree(self.dimension, (self.index + 1) % self.dimension)
self.right = kdtree(self.dimension, (self.index + 1) % self.dimension)
print self.parent
return self.parent
elif self.split[self.index] < thePoint[self.index]:
#go left
print "%s, go left%s" % (self.split,"")
self.left.addPoint(thePoint, self)
else:
#go right
print "%s, go right%s" % (self.split,"")
self.right.addPoint(thePoint, self)
if self.split is None: print "test"
if __name__ == "__main__":
pointList=[(5,6), (9,7), (8,3), (7,4), (6,7), (10,6), (4,8), (3,1), (2,0), (1,9)]
k = kdtree()
for i in range(len(pointList)):
thePoint=pointList[i]
print k.addPoint(thePoint)