(self, node, l, r)
| 216 | super().__init__(**kwargs) |
| 217 | |
| 218 | def query(self, node, l, r): |
| 219 | if node.l == l and node.r == r: |
| 220 | self.play(self.tree.get_node(node.id).set_color, BLUE) |
| 221 | self.show_message("找到区间[%d, %d]"%(l, r)) |
| 222 | self.wait() |
| 223 | return node.v |
| 224 | m = math.floor((node.l+node.r)/2) |
| 225 | # |
| 226 | if r <= m: |
| 227 | arrow = self.tree.get_edge(node.id, node.left.id) |
| 228 | self.play(arrow.set_color, BLUE) |
| 229 | return self.query(node.left, l, r) |
| 230 | elif l >m: |
| 231 | arrow = self.tree.get_edge(node.id, node.right.id) |
| 232 | self.play(arrow.set_color, BLUE) |
| 233 | return self.query(node.right, l, r) |
| 234 | |
| 235 | arrow = self.tree.get_edge(node.id, node.left.id) |
| 236 | self.play(arrow.set_color, BLUE) |
| 237 | arrow = self.tree.get_edge(node.id, node.right.id) |
| 238 | self.play(arrow.set_color, BLUE) |
| 239 | return self.query(node.left, l, m)+self.query(node.right, m+1, r) |
| 240 | |
| 241 | |
| 242 | def construct(self): |
no test coverage detected