PatternsTree TraversalDepth First SearchInordergenerative def inorder(node: Optional[TreeNode]) -> Iterator[TreeNode]: if node: yield from inorder(node.left) yield node yield from inorder(node.right) recursive def inorder(node: Optional[TreeNode]) -> List[TreeNode]: if not node: return [] left = inorder(node.left) right = inorder(node.right) return left + [node] + right iterative def inorder(node: Optional[TreeNode]) -> List[TreeNode]: stack = [] result = [] while node or stack: while node: stack.append(node) node = node.left node = stack.pop() result.append(node) node = node.right return resultPreorderPrevious PagePostorderNext Page