>>> root = TreeNode(1) >>> tree_node2 = TreeNode(2) >>> tree_node3 = TreeNode(3) >>> tree_node4 = TreeNode(4) >>> tree_node5 = TreeNode(5) >>> tree_node6 = TreeNode(6) >>> tree_node7 = TreeNode(7) >>> root.left, root.right = tree_node2, tree_node3 >>> tree_node2.
(node: TreeNode)
| 170 | |
| 171 | # iteration version |
| 172 | def pre_order_iter(node: TreeNode) -> None: |
| 173 | """ |
| 174 | >>> root = TreeNode(1) |
| 175 | >>> tree_node2 = TreeNode(2) |
| 176 | >>> tree_node3 = TreeNode(3) |
| 177 | >>> tree_node4 = TreeNode(4) |
| 178 | >>> tree_node5 = TreeNode(5) |
| 179 | >>> tree_node6 = TreeNode(6) |
| 180 | >>> tree_node7 = TreeNode(7) |
| 181 | >>> root.left, root.right = tree_node2, tree_node3 |
| 182 | >>> tree_node2.left, tree_node2.right = tree_node4 , tree_node5 |
| 183 | >>> tree_node3.left, tree_node3.right = tree_node6 , tree_node7 |
| 184 | >>> pre_order_iter(root) |
| 185 | 1,2,4,5,3,6,7, |
| 186 | """ |
| 187 | if not isinstance(node, TreeNode) or not node: |
| 188 | return |
| 189 | stack: list[TreeNode] = [] |
| 190 | n = node |
| 191 | while n or stack: |
| 192 | while n: # start from root node, find its left child |
| 193 | print(n.data, end=",") |
| 194 | stack.append(n) |
| 195 | n = n.left |
| 196 | # end of while means current node doesn't have left child |
| 197 | n = stack.pop() |
| 198 | # start to traverse its right child |
| 199 | n = n.right |
| 200 | |
| 201 | |
| 202 | def in_order_iter(node: TreeNode) -> None: |
no test coverage detected