Flatten Binary Tree to Linked List

Given the root of a binary tree, flatten the tree into a "linked list":

  • The "linked list" should use the same TreeNode class where the right child pointer points to the next node in the list and the left child pointer is always null.
  • The "linked list" should be in the same order as a pre-order traversal of the binary tree.

Follow up: Can you flatten the tree in-place with O(1) extra space?

Example 1
        1
       / \
      2   5      ->      [1] -> [2] -> [3] -> [4] -> [5] -> [6] -> null
     / \   \
    3   4   6
Inputroot = [1,2,5,3,4,null,6]
Output[1,null,2,null,3,null,4,null,5,null,6]
The tree is flattened in preorder so every node appears along the right pointers and every left pointer is null.
Example 2
null
---
null
Inputroot = []
Output[]
An empty tree remains empty after flattening.

Constraints

  • The number of nodes in the tree is in the range [0, 2000].
  • -100 <= Node.val <= 100

Asked at 7 companies

</>

Your Solution

(Ctrl/Cmd + Enter)

Switching Language

Loading template...

Loading...

Sign in to save your progress

AI code evaluation

Get a correctness verdict, missed edge cases, and complexity analysis of your solution.

Sign in to evaluate