Tree: Depth-First Search - Binary Tree Postorder Traversal
Given the following iterative postorder traversal code using one stack and a pointer, what is the output for the tree: root = TreeNode(1, TreeNode(2), TreeNode(3))?
```python
from typing import Optional, List
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def postorderTraversal(root: Optional[TreeNode]) -> List[int]:
result = []
stack = []
last_visited = None
current = root
while current or stack:
while current:
stack.append(current)
current = current.left
peek_node = stack[-1]
if peek_node.right and last_visited != peek_node.right:
current = peek_node.right
else:
result.append(peek_node.val)
last_visited = stack.pop()
return result
```
