Skip to main content
Engineering LibreTexts

5.2: Sample implementations for Tree Traversal

  • Page ID
    47901
  • preorder(node)
     visit(node)
     if node.left ≠ null then preorder(node.left)
     if node.right ≠ null then preorder(node.right)
    
    inorder(node)
     if node.left ≠ null then inorder(node.left)
     visit(node)
     if node.right ≠ null then inorder(node.right)
    
    postorder(node)
     if node.left ≠ null then postorder(node.left)
     if node.right ≠ null then postorder(node.right)
     visit(node)
    
    levelorder(root)
     queue<node> q
     q.push(root)
     while not q.empty do
      node = q.pop
      visit(node)
      if node.left ≠ null then q.push(node.left)
      if node.right ≠ null then q.push(node.right)
    

    For an algorithm that is less taxing on the stack, see Threaded Trees.

    • Was this article helpful?