Binary Search Tree Traversal

Example Tree

  • Traversal Order : 1,2,3,4,5

Depth-first search (IPPO)

Inorder (Left, Root, Right)

  • Traversal Order : 4,2,5,1,3
  • It is very commonly used in binary search trees because it returns values from the underlying set in order

Preorder (Root, Left, Right)

  • Traversal Order : 1,2,4,5,3
  • It can also be used to make a prefix expression (Polish notation) from expression trees

Postorder (Left, Right, Root)

  • Traversal Order : 4,5,2,3,1
  • It can be used while freeing nodes and values can delete or free an entire binary tree.

DFS Code Snippet

# inorder : Left , Root , Right
def inOrderTraverse(tree, array):
    if tree is not None:
		inOrderTraverse(tree.left,array)
		array.append(tree.value)
		inOrderTraverse(tree.right,array)
	return array

# preorder : Root, Left , Right
def preOrderTraverse(tree, array):
    if tree is not None:
		array.append(tree.value)
		preOrderTraverse(tree.left,array)
		preOrderTraverse(tree.right,array)
	return array

# postorder : Left , Right , Root
def postOrderTraverse(tree, array):
	if tree is not None:
		postOrderTraverse(tree.left,array)
		postOrderTraverse(tree.right,array)
		array.append(tree.value)
	return array