A Node has value variable and pointers to Nodes to its left and right.
| 12 | |
| 13 | @dataclass |
| 14 | class Node: |
| 15 | """ |
| 16 | A Node has value variable and pointers to Nodes to its left and right. |
| 17 | """ |
| 18 | |
| 19 | value: int |
| 20 | left: Node | None = None |
| 21 | right: Node | None = None |
| 22 | |
| 23 | def __iter__(self) -> Iterator[int]: |
| 24 | if self.left: |
| 25 | yield from self.left |
| 26 | yield self.value |
| 27 | if self.right: |
| 28 | yield from self.right |
| 29 | |
| 30 | def __len__(self) -> int: |
| 31 | return sum(1 for _ in self) |
| 32 | |
| 33 | def mirror(self) -> Node: |
| 34 | """ |
| 35 | Mirror the binary tree rooted at this node by swapping left and right children. |
| 36 | |
| 37 | >>> tree = Node(0) |
| 38 | >>> list(tree) |
| 39 | [0] |
| 40 | >>> list(tree.mirror()) |
| 41 | [0] |
| 42 | >>> tree = Node(1, Node(0), Node(3, Node(2), Node(4, None, Node(5)))) |
| 43 | >>> tuple(tree) |
| 44 | (0, 1, 2, 3, 4, 5) |
| 45 | >>> tuple(tree.mirror()) |
| 46 | (5, 4, 3, 2, 1, 0) |
| 47 | """ |
| 48 | self.left, self.right = self.right, self.left |
| 49 | if self.left: |
| 50 | self.left.mirror() |
| 51 | if self.right: |
| 52 | self.right.mirror() |
| 53 | return self |
| 54 | |
| 55 | |
| 56 | def make_tree_seven() -> Node: |
no outgoing calls
no test coverage detected