コード例 #1
0
class RBTreeVector:
    __slots__ = ['vector', 'nodes', 'tree', 'dim']

    def __init__(self, vector):
        self.vector = vector
        self.dim = len(vector)
        self.tree = RBTree()
        self.nodes = []
        for el in vector:
            if abs(el) < 1e-6:
                self.nodes.append(self.tree.nil)
            else:
                self.nodes.append(self.tree.insert(el))

    def update(self, new_vector):
        for i, el in enumerate(new_vector):
            if abs(self.vector[i] - el) < 1e-6:
                continue
            if self.nodes[i] != self.tree.nil:
                self.tree.delete_node(self.nodes[i])
            if abs(el) > 1e-6:
                self.nodes[i] = self.tree.insert(el)
            else:
                self.nodes[i] = self.tree.nil
        self.vector = np.array(new_vector)
コード例 #2
0
from rb_tree import RBTree

if __name__=='__main__':
    n0 = Node(7)
    n1 = Node(3)
    n2 = Node(18)
    n3 = Node(10)
    n4 = Node(22)
    n5 = Node(8)
    n6 = Node(11)
    n7 = Node(26)
    n8 = Node(2)
    n9 = Node(6)
    n10 = Node(13)
    rb_tree = RBTree()
    rb_tree.insert(n0)
    rb_tree.insert(n1)
    rb_tree.insert(n2)
    rb_tree.insert(n3)
    rb_tree.insert(n4)
    rb_tree.insert(n5)
    rb_tree.insert(n6)
    rb_tree.insert(n7)
    rb_tree.out_graph()
    input()
    rb_tree.insert(n8)
    rb_tree.insert(n9)
    rb_tree.insert(n10)

    rb_tree.out_graph()
コード例 #3
0
words = file_to_words(f)
t = RBTree(words[0])
words = words[1:]
#for word in words:
#    t = t.insert(word)

#print(t.gv_serialize())

i = 0
f = open(str(i) + '.dot', 'w')
f.write(t.gv_serialize())
f.close()
i += 1
for word in words:
    t.insert(word)
    f = open(str(i) + '.dot', 'w')
    i += 1
    f.write(t.gv_serialize())
    f.close()


def print_t_colors(t):
    print('//', t.color, str(t.value))
    if t.left is not None:
        print_t_colors(t.left)
    if t.right is not None:
        print_t_colors(t.right)


print_t_colors(t)