Preorder Traversal
^33568e
rootNode comes before its children, hence the name
Recursive
def preOrderTraversal(rootNode: TreeNode) -> None:
if not rootNode:
return None
visit(rootNode)
preOrderTraversal(rootNode.left)
preOrderTraversal(rootNode.right)
Iterative
We're using stack
def preOrderTraversalIterative(rootNode: TreeNode) -> None:
if not rootNode:
return None
stack = deque([rootNode])
while stack:
currNode = stack.popleft()
visit(currNode)
# Node add the right first before left for next iteration to pop the left first
if (currNode.right):
stack.appendleft(currNode.right)
if (currNode.left):
stack.appendleft(currNode.left)