7. Inorder Traversal

The problem can be found at the following link: Question Link

Problem Description

Given a Binary Tree, your task is to return its In-Order Traversal.

An inorder traversal first visits the left subtree (including its entire subtree), then visits the node, and finally visits the right subtree (including its entire subtree).

Examples:

  • Example 1:

  • Input: root[] = [1, 2, 3, 4, 5]

  • Output: [4, 2, 5, 1, 3]

  • Explanation: The in-order traversal of the given binary tree is [4, 2, 5, 1, 3].

  • Example 2:

  • Input: root[] = [8, 1, 5, N, 7, 10, 6, N, 10, 6]

  • Output: [1, 7, 10, 8, 6, 10, 5, 6]

  • Explanation: The in-order traversal of the given binary tree is [1, 7, 10, 8, 6, 10, 5, 6].

My Approach

  1. Recursive In-Order Traversal:

    • Visit Left Subtree: Recursively traverse the left subtree.

    • Process Current Node: Once the left subtree is completely traversed, record the current node's data.

    • Visit Right Subtree: Recursively traverse the right subtree.

  2. Storing the Result:

    • As each node is processed, add its data to a list (or array).

    • Return the list after completing the traversal.

  3. Handling Null Nodes:

    • If a node is null (or None in Python), simply return without performing any action.

Time and Auxiliary Space Complexity

  • Expected Time Complexity: O(n), where n is the number of nodes in the binary tree, since every node is visited exactly once.

  • Expected Auxiliary Space Complexity: O(1) in the worst case due to the recursion stack in a skewed tree. In a balanced tree, the recursion stack space is O(log n).

Code (C)

Code (C++)

🌲 Alternative Approaches

2️⃣ C++ - Recursive Approach

3️⃣ C++ - Iterative Approach

Comparison of Approaches

Approach
Time Complexity
Space Complexity
Method
Pros
Cons

Recursive DFS (Top-Down)

🟢 O(N)

🟡 O(H)

Recursion

Simple and concise; directly follows the recursive definition of inorder traversal

May cause stack overflow for very deep (skewed) trees

Iterative DFS (Using Stack)

🟢 O(N)

🟡 O(H)

Stack-based

Avoids recursion depth issues; offers explicit control over traversal order

Slightly more complex to implement than recursion

Best Choice?

  • For balanced trees and standard use cases: The Recursive DFS approach is usually sufficient and more straightforward to implement.

  • For very deep or skewed trees: The Iterative DFS (Using Stack) approach is preferable to prevent potential stack overflow issues.

Code (Java)

Code (Python)

Contribution and Support

For discussions, questions, or doubts related to this solution, feel free to connect on LinkedIn: Any Questions. Let’s make this learning journey more collaborative!

⭐ If you find this helpful, please give this repository a star! ⭐


📍Visitor Count

Last updated