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)
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()
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)