Given a Binary Search Tree, iterate over the elements without using recursion.
Anonym
for in order traverse a tree, we use stack to store nodes on the path. (for preorder/postorder traverse, only little to be changed.) def inorder(node): stack = [] leftChecked = False while node != None: if not leftChecked and node.left != None: stack.append(node) node = node.left else: print node.data if node.right != None: node = node.right leftChecked = False elif len(stack)>0: node = stack.pop() leftChecked = True else: node = None for breadth-first traversal, we use a queue to store untraversed children nodes def breadthfirst(node): from collections import deque q = deque() if node != None: q.append(node) while len(q)>0: node = q.popleft() print node.data if node.left != None: q.append(node.left) if node.right != None: q.append(node.right)