haikid

Iterative DFS (In/Pre/Post)

Dec 12th, 2024
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.00 KB | None | 0 0
  1. def inorder(root):
  2.     stack = []
  3.     curr = root
  4.  
  5.     while curr or stack:
  6.         if curr:
  7.             stack.append(curr)
  8.             curr = curr.left
  9.         else:
  10.             curr = stack.pop()
  11.             print(curr.val)
  12.             curr = curr.right
  13.            
  14. def preorder(root):
  15.     stack = []
  16.     curr = root
  17.     while curr or stack:
  18.         if curr:
  19.             print(curr.val)
  20.             if curr.right:
  21.                 stack.append(curr.right)
  22.             curr = curr.left
  23.         else:
  24.             curr = stack.pop()
  25.            
  26. def postorder(root):
  27.     stack = [root]
  28.     visit = [False]
  29.     while stack:
  30.         curr, visited = stack.pop(), visit.pop()
  31.         if curr:
  32.             if visited:
  33.                 print(curr.val)
  34.             else:
  35.                 stack.append(curr)
  36.                 visit.append(True)
  37.                 stack.append(curr.right)
  38.                 visit.append(False)
  39.                 stack.append(curr.left)
  40.                 visit.append(False)
Advertisement
Add Comment
Please, Sign In to add comment