class Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
def traverse(root):
if not root:
return
output.append(root.val)
traverse(root.left)
traverse(root.right)
output = []
traverse(root)
return output
Iterative Code
class Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
if not root:
return []
order = [root]
output = []
while order:
current = order.pop()
output.append(current.val)
if current.right:
order.append(current.right)
if current.left:
order.append(current.left)
return output