Bird
Raised Fist0
Data Structures Theoryknowledge~5 mins

Inorder traversal gives sorted order in Data Structures Theory - Time & Space Complexity

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
Time Complexity: Inorder traversal gives sorted order
O(n)
Understanding Time Complexity

We want to understand how the time needed to traverse a binary search tree in order grows as the tree gets bigger.

Specifically, how does the number of steps change when we do an inorder traversal to get sorted values?

Scenario Under Consideration

Analyze the time complexity of the following inorder traversal code.


function inorderTraversal(node) {
  if (node == null) return;
  inorderTraversal(node.left);
  visit(node.value);  // process current node
  inorderTraversal(node.right);
}
    

This code visits each node in a binary search tree in ascending order.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Recursive calls visiting each node once.
  • How many times: Exactly once per node in the tree.
How Execution Grows With Input

Each node is visited one time, so the total steps grow directly with the number of nodes.

Input Size (n)Approx. Operations
10About 10 visits
100About 100 visits
1000About 1000 visits

Pattern observation: The work grows in a straight line as the tree size grows.

Final Time Complexity

Time Complexity: O(n)

This means the time to complete the traversal grows directly with the number of nodes in the tree.

Common Mistake

[X] Wrong: "Inorder traversal takes longer because it visits nodes multiple times."

[OK] Correct: Each node is visited exactly once during inorder traversal, so the time grows linearly, not more.

Interview Connect

Knowing that inorder traversal visits each node once helps you explain how to get sorted data from a binary search tree efficiently.

Self-Check

"What if the tree is not a binary search tree but just any binary tree? How would the time complexity of inorder traversal change?"

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