2196. Create Binary Tree From Descriptions

Difficulty:
Related Topics:
Similar Questions:

Problem

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,

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:

Solution

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {number[][]} descriptions
 * @return {TreeNode}
 */
var createBinaryTree = function(descriptions) {
    var nodeMap = {};
    var hasNoParentMap = {};
    for (var i = 0; i < descriptions.length; i++) {
        var [parent, child, isLeft] = descriptions[i];
        if (hasNoParentMap[parent] === undefined) hasNoParentMap[parent] = true;
        hasNoParentMap[child] = false;
        if (!nodeMap[parent]) nodeMap[parent] = new TreeNode(parent);
        if (!nodeMap[child]) nodeMap[child] = new TreeNode(child);
        if (isLeft) {
            nodeMap[parent].left = nodeMap[child];
        } else {
            nodeMap[parent].right = nodeMap[child];
        }
    }
    return nodeMap[Object.keys(hasNoParentMap).filter(key => hasNoParentMap[key])[0]];
};

Explain:

nope.

Complexity:

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy