(self, node, val, new_val)
| 160 | super().__init__(**kwargs) |
| 161 | |
| 162 | def find_element(self, node, val, new_val): |
| 163 | if not node: |
| 164 | return |
| 165 | if node.l==node.r and node.v == val: |
| 166 | n = self.tree.get_node(node.id) |
| 167 | self.play(n.set_color, RED) |
| 168 | self.show_message("修改元素") |
| 169 | n.set_text(str(new_val)) |
| 170 | n.set_color(RED) |
| 171 | node.v = new_val |
| 172 | return |
| 173 | |
| 174 | if node.l == node.r: |
| 175 | return |
| 176 | |
| 177 | self.find_element(node.left, val, new_val) |
| 178 | self.find_element(node.right, val, new_val) |
| 179 | old_v = node.v |
| 180 | node.v = node.left.v + node.right.v |
| 181 | if old_v != node.v: |
| 182 | n = self.tree.get_node(node.id) |
| 183 | self.show_message("更新元素%d -> %d"%(old_v, node.v)) |
| 184 | self.play(FocusOn(n)) |
| 185 | n.set_text(str(node.v)) |
| 186 | self.play(n.set_color, RED) |
| 187 | |
| 188 | def construct(self): |
| 189 | self.start_logo(animate=False) |
no test coverage detected