Ejemplo n.º 1
0
Archivo: T.py Proyecto: ideasman42/lsi
 def __init__(self, value, left, right, parent):
     self.value = value  # associated line segment
     self.left = left
     self.right = right
     self.parent = parent
     self.m = None
     if value is not None:
         self.m = helper.get_slope(value)
Ejemplo n.º 2
0
Archivo: T.py Proyecto: ideasman42/lsi
    def insert(self, key, s):
        if self.root.value is None:
            self.root.left = Node(s, None, None, self.root)
            self.root.value = s
            self.root.m = helper.get_slope(s)
        else:
            (node, path) = self.root.find_insert_pt(key, s)
            if path == 'r':
                node.right = Node(s, None, None, node)
                node.right.adjust()
            elif path == 'l':
                node.left = Node(s, None, None, node)
            else:
                # this means matching Node was a leaf
                # need to make a new internal Node
                c = node.compare_to_key(key)
                if ((c < 0) or (c == 0 and node.compare_lower(key, s) < 1)):

                    new_internal = Node(s, None, node, node.parent)
                    new_leaf = Node(s, None, None, new_internal)
                    new_internal.left = new_leaf
                    if node is node.parent.left:
                        node.parent.left = new_internal
                        node.adjust()
                    else:
                        node.parent.right = new_internal
                else:
                    new_internal = Node(node.value, node, None, node.parent)
                    new_leaf = Node(s, None, None, new_internal)
                    new_internal.right = new_leaf
                    if node is node.parent.left:
                        node.parent.left = new_internal
                        new_leaf.adjust()
                    else:
                        node.parent.right = new_internal
                node.parent = new_internal