code: def add(self, point):
          
  
          current = self
          while True:
              check_dimensionality([point], dimensions=current.dimensions)
  
              # Adding has hit an empty leaf-node, add here
              if current.data is None:
                  current.data = point
                  return current
  
              # split on self.axis, recurse either left or right
              if point[current.axis] < current.data[current.axis]:
                  if current.left is None:
                      current.left = current.create_subnode(point)
                      return current.left
                  else:
                      current = current.left
              else:
                  if current.right is None:
                      current.right = current.create_subnode(point)
                      return current.right
                  else:
                      current = current.right
docs: Adds a point to the current node or iteratively
          descends to one of its children.
  
          Users should call add() only to the topmost tree.