*Tree Traversals - ALawliet/algorithms GitHub Wiki
class Solution:
def inorderIterative(self, root: TreeNode) -> List[int]:
res = []
stack = []
while stack or root:
if root:
stack.append(root)
root = root.left
else:
node = stack.pop()
res.append(node.val)
root = node.right
return res
class Solution:
def postorderIterative(self, root: TreeNode) -> List[int]:
res = []
stack = [root]
while stack:
node = stack.pop()
if node:
res.append(node.val) # pre-order with stack
stack.append(node.left)
stack.append(node.right) # so right goes on top
return res[::-1] # reverse result
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
res = deque()
if root is None: return res
Q = deque([root])
while Q:
levelSize = len(Q)
currentLevel = []
for _ in range(levelSize):
node = Q.popleft()
currentLevel.append(node.val)
if node.left:
Q.append(node.left)
if node.right:
Q.append(node.right)
res.append(currentLevel)
return res