Talentd
FleetCode

2196. Create Binary Tree From Descriptions

Medium83.9% acceptance7 companies

You are given a 2D integer array descriptions where descriptions[i] = [parenti, childi, isLefti] indicates that parenti is the parent of childi in a binary tree of unique values. Furthermore,

  • If isLefti == 1, then childi is the left child of parenti.
  • If isLefti == 0, then childi is the right child of parenti.

Construct the binary tree described by descriptions and return its root.

The test cases will be generated such that the binary tree is valid.

Example 1:

Input: descriptions = [[20,15,1],[20,17,0],[50,20,1],[50,80,0],[80,19,1]]
Output: [50,20,80,15,17,19]
Explanation: The root node is the node with value 50 since it has no parent.
The resulting binary tree is shown in the diagram.

Example 2:

Input: descriptions = [[1,2,1],[2,3,0],[3,4,1]]
Output: [1,2,null,null,3,4]
Explanation: The root node is the node with value 1 since it has no parent.
The resulting binary tree is shown in the diagram.

Constraints:

  • 1 <= descriptions.length <= 104
  • descriptions[i].length == 3
  • 1 <= parenti, childi <= 105
  • 0 <= isLefti <= 1
  • The binary tree described by descriptions is valid.

Hints open one at a time

Hint 1
Could you represent and store the descriptions more efficiently?
Hint 2
Could you find the root node?
Hint 3
The node that is not a child in any of the descriptions is the root node.
19:14
Still stuck?Read 3 approaches, or watch a walkthrough.
Open solution
Loading editor…
1# Definition for a binary tree node.
2# class TreeNode:
3# def __init__(self, val=0, left=None, right=None):
4# self.val = val
5# self.left = left
6# self.right = right
7class Solution:
8 def createBinaryTree(self, descriptions: List[List[int]]) -> Optional[TreeNode]:
9
Starter codePython 3Spaces: 4
Examples
Input
[[20,15,1],[20,17,0],[50,20,1],[50,80,0],[80,19,1]]
Input
[[1,2,1],[2,3,0],[3,4,1]]
Your code is saved on this device.Solution