Find the point in the tree that minimizes the distance to the query.

        Args:
            query (:obj:`tuple` of float or int): Stores the position of the
                node.
            dist_fun (:obj:`function`, optional): The distance function,
                euclidean distance by default.

        Returns:
            :obj:`tuple`: Tuple of length 2, where the first element is the
                identifier of the nearest node, the second is the distance
                to the query.

        Example:
            >>> tree = Tree(2, 3)
            >>> tree.insert((0, 0))
            >>> tree.insert((3, 5))
            >>> tree.insert((-1, 7))
            >>> query = (-1, 8)
            >>> nearest_node_id, dist = tree.find_nearest_point(query)
            >>> dist
            1

def find_nearest_point(self, query, dist_fun=euclidean_dist):
        """Find the point in the tree that minimizes the distance to the query.

        Args:
            query (:obj:`tuple` of float or int): Stores the position of the
                node.
            dist_fun (:obj:`function`, optional): The distance function,
                euclidean distance by default.

        Returns:
            :obj:`tuple`: Tuple of length 2, where the first element is the
                identifier of the nearest node, the second is the distance
                to the query.

        Example:
            >>> tree = Tree(2, 3)
            >>> tree.insert((0, 0))
            >>> tree.insert((3, 5))
            >>> tree.insert((-1, 7))
            >>> query = (-1, 8)
            >>> nearest_node_id, dist = tree.find_nearest_point(query)
            >>> dist
            1

        """
        def get_properties(node_id):
            return self.node_list[node_id][:6]

        return nearest_point(query, 0, get_properties, dist_fun)