Bird
Raised Fist0
Data Structures Theoryknowledge~6 mins

Inorder traversal gives sorted order in Data Structures Theory - Full Explanation

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Imagine you have a collection of numbers stored in a special tree, and you want to see them in order from smallest to largest. The problem is how to visit each number so that you get this sorted list without rearranging the tree.
Explanation
Binary Search Tree Structure
A binary search tree (BST) is a tree where each node has up to two children. The left child contains values smaller than the node, and the right child contains values larger than the node. This structure helps keep data organized for quick searching.
The BST property ensures smaller values are on the left and larger on the right, setting the stage for sorted traversal.
Inorder Traversal Process
Inorder traversal visits nodes in a specific order: first the left subtree, then the current node, and finally the right subtree. This means it explores all smaller values before the current node and all larger values after.
Inorder traversal follows left-node-right order to visit nodes.
Why Inorder Traversal Produces Sorted Order
Because the BST places smaller values on the left and larger on the right, visiting nodes in left-node-right order naturally lists values from smallest to largest. This traversal respects the BST's ordering rules.
Inorder traversal outputs values in ascending order for BSTs.
Applications of Sorted Output
Getting sorted data from a BST is useful for tasks like printing values in order, searching efficiently, or preparing data for other algorithms that need sorted input.
Inorder traversal helps extract sorted data without extra sorting steps.
Real World Analogy

Imagine a library where books are arranged so that all books with earlier publication years are on the left shelves and later years on the right. Walking through the library by first checking the left shelves, then the current shelf, and finally the right shelves lets you see books from oldest to newest.

Binary Search Tree Structure → Library shelves arranged with older books on the left and newer books on the right
Inorder Traversal Process → Walking through the library by checking left shelves first, then current shelf, then right shelves
Why Inorder Traversal Produces Sorted Order → Seeing books in order from oldest to newest because of the shelf arrangement and walking order
Applications of Sorted Output → Using the ordered list of books to find a specific publication year or prepare a reading list
Diagram
Diagram
        ┌─────┐
        │  10 │
        └──┬──┘
           │
    ┌──────┴──────┐
    │             │
 ┌──┴──┐       ┌──┴──┐
 │  5  │       │ 15  │
 └──┬──┘       └──┬──┘
    │             │
 ┌──┴──┐       ┌──┴──┐
 │  3  │       │ 20  │
 └─────┘       └─────┘

Inorder traversal visits nodes in this order: 35101520
This diagram shows a binary search tree and the order nodes are visited during inorder traversal, producing sorted output.
Key Facts
Binary Search Tree (BST)A tree where left children are smaller and right children are larger than the parent node.
Inorder TraversalA method of visiting nodes by left subtree, then node, then right subtree.
Sorted Order OutputInorder traversal of a BST lists values from smallest to largest.
Traversal ApplicationInorder traversal helps retrieve sorted data without extra sorting.
Code Example
Data Structures Theory
class Node:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None

def inorder_traversal(root):
    if root is None:
        return []
    return inorder_traversal(root.left) + [root.val] + inorder_traversal(root.right)

# Create BST
root = Node(10)
root.left = Node(5)
root.right = Node(15)
root.left.left = Node(3)
root.right.right = Node(20)

# Get sorted values
sorted_values = inorder_traversal(root)
print(sorted_values)
OutputSuccess
Common Confusions
Inorder traversal always gives sorted order for any tree.
Inorder traversal always gives sorted order for any tree. Inorder traversal gives sorted order only if the tree is a binary search tree (BST) with the correct left-smaller, right-larger property.
Preorder or postorder traversal also produce sorted order.
Preorder or postorder traversal also produce sorted order. Only inorder traversal visits nodes in a way that respects BST ordering to produce sorted output; preorder and postorder do not.
Summary
Inorder traversal visits nodes in left-node-right order, which matches the BST's left-smaller, right-larger structure.
This traversal method naturally produces a sorted list of values from a binary search tree without extra sorting.
Understanding this helps efficiently retrieve ordered data from BSTs for many applications.

Practice

(1/5)
1. What is the main result of performing an inorder traversal on a binary search tree (BST)?
easy
A. It visits nodes randomly.
B. It visits nodes in descending sorted order.
C. It visits only leaf nodes.
D. It visits nodes in ascending sorted order.

Solution

  1. Step 1: Understand inorder traversal definition

    Inorder traversal visits the left child, then the node itself, then the right child.
  2. Step 2: Apply inorder traversal to BST property

    Since BST nodes have smaller values on the left and larger on the right, inorder traversal visits nodes in ascending order.
  3. Final Answer:

    It visits nodes in ascending sorted order. -> Option D
  4. Quick Check:

    Inorder traversal = ascending order [OK]
Hint: Inorder on BST always gives sorted ascending list [OK]
Common Mistakes:
  • Confusing inorder with preorder or postorder
  • Thinking traversal visits nodes randomly
  • Assuming it visits nodes in descending order
2. Which of the following is the correct sequence of steps in an inorder traversal of a binary tree?
easy
A. Visit left child, then node, then right child
B. Visit node, then left child, then right child
C. Visit right child, then node, then left child
D. Visit left child, then right child, then node

Solution

  1. Step 1: Recall inorder traversal order

    Inorder traversal means visiting the left subtree first, then the node, then the right subtree.
  2. Step 2: Match the correct sequence

    Visit left child, then node, then right child matches this order exactly: left child, node, right child.
  3. Final Answer:

    Visit left child, then node, then right child -> Option A
  4. Quick Check:

    Inorder = left, node, right [OK]
Hint: Inorder = left subtree, node, right subtree [OK]
Common Mistakes:
  • Mixing up preorder and inorder sequences
  • Visiting node before left child
  • Visiting right child before node
3. Given the BST below, what is the output of an inorder traversal?
      10
     /  \
    5    15
   / \     \
  3   7     20
medium
A. [20, 15, 10, 7, 5, 3]
B. [10, 5, 3, 7, 15, 20]
C. [3, 5, 7, 10, 15, 20]
D. [5, 3, 7, 10, 15, 20]

Solution

  1. Step 1: Perform inorder traversal on the BST

    Visit left subtree (3, 5, 7), then root (10), then right subtree (15, 20).
  2. Step 2: Write nodes in visited order

    The order is 3, 5, 7, 10, 15, 20.
  3. Final Answer:

    [3, 5, 7, 10, 15, 20] -> Option C
  4. Quick Check:

    Inorder traversal output = sorted ascending list [OK]
Hint: Inorder traversal of BST = sorted ascending values [OK]
Common Mistakes:
  • Listing nodes in preorder or postorder instead
  • Confusing left and right subtree order
  • Forgetting to include all nodes
4. A student wrote this inorder traversal code but it does not print nodes in sorted order for a BST. What is the mistake?
def inorder(node):
    if node:
        inorder(node.right)
        print(node.value)
        inorder(node.left)
medium
A. The function visits right child before left child, reversing order.
B. The function misses printing the node value.
C. The function does not check if node is None.
D. The function should print before visiting children.

Solution

  1. Step 1: Analyze the traversal order in code

    The code visits right child first, then node, then left child, which is reverse of inorder.
  2. Step 2: Understand effect on BST traversal

    This reversed order prints nodes in descending order, not ascending sorted order.
  3. Final Answer:

    The function visits right child before left child, reversing order. -> Option A
  4. Quick Check:

    Inorder must visit left before right [OK]
Hint: Inorder visits left child before right child [OK]
Common Mistakes:
  • Swapping left and right subtree calls
  • Printing node value in wrong place
  • Not checking for null node
5. You have a binary tree that is not a BST. You perform an inorder traversal and get the sequence [4, 2, 5, 1, 6]. Which of the following is true?
hard
A. The tree is a BST because inorder traversal is sorted.
B. The tree is not a BST because inorder traversal is not sorted.
C. Inorder traversal always gives sorted order regardless of tree type.
D. The tree must be balanced to get this sequence.

Solution

  1. Step 1: Check if inorder traversal sequence is sorted

    The sequence [4, 2, 5, 1, 6] is not in ascending order.
  2. Step 2: Understand BST property and inorder traversal

    In a BST, inorder traversal always produces a sorted ascending sequence. Since this is not sorted, the tree is not a BST.
  3. Final Answer:

    The tree is not a BST because inorder traversal is not sorted. -> Option B
  4. Quick Check:

    Inorder sorted = BST; not sorted = not BST [OK]
Hint: Inorder sorted? Yes BST; No not BST [OK]
Common Mistakes:
  • Assuming inorder always sorts any tree
  • Confusing balanced tree with BST
  • Ignoring order of traversal output