DDSA Solutions

Inorder Traversal

Time: O(n)
Space: O(h)

Problem Overview

Visit left subtree, then root, then right subtree.

See our study guide for structured GFG and LeetCode practice.

Intuition

Visit left subtree, then root, then right subtree. For iterative: use stack to simulate call stack.

Algorithm

  1. 1Recursive: inorder(left), visit root, inorder(right).
  2. 2Iterative: push all left nodes to stack. Pop, add to result, then push all left nodes of right subtree.

Common Pitfalls

  • Morris traversal achieves O(1) space by temporarily modifying tree links.
Inorder Traversal.java
Java
// Approach: Recursive or iterative in-order (left-root-right) traversal of binary tree.
// Time: O(n) Space: O(h)
class Node {
    int data;
    Node left, right;

    Node(int item) {
        data = item;
        left = right = null;
    }
}

class Solution {
    // Function to return a list containing the inorder traversal of the tree.
    ArrayList<Integer> inOrder(Node root) {
        ArrayList<Integer> arr = new ArrayList<>();
        helper(root, arr);
        return arr;
    }

    void helper(Node root, ArrayList<Integer> arr) {
        if (root == null)
            return;

        helper(root.left, arr);
        arr.add(root.data);
        helper(root.right, arr);
    }
}
Was this solution helpful?