Construct String from Binary Tree

Given the root node of a binary tree, your task is to create a string representation of the tree following a specific set of formatting rules. The representation should be based on a preorder traversal of the binary tree and must adhere to the following guidelines:

  • Node Representation: Each node in the tree should be represented by its integer value.
  • Parentheses for Children: If a node has at least one child, either left or right, its children should be represented inside parentheses:
  • If a node has a left child, the value of the left child should be enclosed in parentheses immediately following the node's value.
  • If a node has a right child, the value of the right child should also be enclosed in parentheses, following the parentheses for the left child.
  • Omitting Empty Parentheses: Any empty parentheses pairs, (), should be omitted from the final string representation of the tree, with one specific exception: when a node has a right child but no left child, you must include an empty pair of parentheses to indicate the absence of the left child.

In summary, empty parentheses pairs should be omitted when a node has only a left child or no children. However, when a node has a right child but no left child, an empty pair of parentheses must precede the representation of the right child to preserve the one-to-one mapping between the string representation and the original binary tree structure.

Example 1
        1
       / \
      2   3
     /
    4
Inputroot = [1,2,3,4]
Output"1(2(4))(3)"
Originally, it needs to be "1(2(4)())(3()())", but after omitting all empty parenthesis pairs it becomes "1(2(4))(3)".
Example 2
        1
       / \
      2   3
       \
        4
Inputroot = [1,2,3,null,4]
Output"1(2()(4))(3)"
The () after 2 is necessary to indicate the absence of a left child for 2 and the presence of a right child.

Constraints

  • The number of nodes in the tree is in the range [1, 10^4].
  • -1000 <= Node.val <= 1000

Asked at 3 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