>>> 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)
| 228 | |
| 229 | |
| 230 | def post_order_iter(node: TreeNode) -> None: |
| 231 | """ |
| 232 | >>> root = TreeNode(1) |
| 233 | >>> tree_node2 = TreeNode(2) |
| 234 | >>> tree_node3 = TreeNode(3) |
| 235 | >>> tree_node4 = TreeNode(4) |
| 236 | >>> tree_node5 = TreeNode(5) |
| 237 | >>> tree_node6 = TreeNode(6) |
| 238 | >>> tree_node7 = TreeNode(7) |
| 239 | >>> root.left, root.right = tree_node2, tree_node3 |
| 240 | >>> tree_node2.left, tree_node2.right = tree_node4 , tree_node5 |
| 241 | >>> tree_node3.left, tree_node3.right = tree_node6 , tree_node7 |
| 242 | >>> post_order_iter(root) |
| 243 | 4,5,2,6,7,3,1, |
| 244 | """ |
| 245 | if not isinstance(node, TreeNode) or not node: |
| 246 | return |
| 247 | stack1, stack2 = [], [] |
| 248 | n = node |
| 249 | stack1.append(n) |
| 250 | while stack1: # to find the reversed order of post order, store it in stack2 |
| 251 | n = stack1.pop() |
| 252 | if n.left: |
| 253 | stack1.append(n.left) |
| 254 | if n.right: |
| 255 | stack1.append(n.right) |
| 256 | stack2.append(n) |
| 257 | while stack2: # pop up from stack2 will be the post order |
| 258 | print(stack2.pop().data, end=",") |
| 259 | |
| 260 | |
| 261 | def prompt(s: str = "", width=50, char="*") -> str: |
no test coverage detected