Inorder traversal (Left -> Root -> Right) can be implemented recursively or iteratively using a stack.
- Initialize an empty
resultlist. - Define a helper function
traverse(node):- If
nodeis None, return. traverse(node.left)result.append(node.val)traverse(node.right)
- If
- Call
traverse(root). - Return
result.
- Time Complexity: O(N), where N is the number of nodes.
- Space Complexity: O(H), where H is the height of the tree (recursion stack).
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def inorder_traversal(root):
res = []
def helper(node):
if not node:
return
helper(node.left)
res.append(node.val)
helper(node.right)
helper(root)
return res