Closed mah-shamim closed 3 months ago
To solve this problem, we can follow these steps:
Let's implement this solution in PHP: 2196. Create Binary Tree From Descriptions
<?php
// Example usage:
$descriptions1 = [[20,15,1],[20,17,0],[50,20,1],[50,80,0],[80,19,1]];
$descriptions2 = [[1,2,1],[2,3,0],[3,4,1]];
$root1 = createBinaryTree($descriptions1);
$root2 = createBinaryTree($descriptions2);
function printTree($node) {
if ($node == null) {
return null;
}
$result = [$node->val];
$result[] = printTree($node->left);
$result[] = printTree($node->right);
return $result;
}
print_r(printTree($root1)); // Output: [50, [20, [15], [17]], [80, [19]]]
print_r(printTree($root2)); // Output: [1, [2, null, [3, [4]]]]
?>
This code defines a TreeNode class to represent each node in the binary tree. The createBinaryTree function constructs the tree based on the descriptions provided and finds the root node by identifying the node that is not a child of any other node. The printTree function is used to print the tree structure for verification.
Contact Links
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks 😍. Your support would mean a lot to me!
If you want more helpful content like this, feel free to follow me:
Discussed in https://github.com/mah-shamim/leet-code-in-php/discussions/29
descriptions[i] = [parenti, childi, isLefti]
indicates thatparenti
is the **parent** ofchildi
in a **binary** tree of **unique** values. Furthermore, - IfisLefti == 1
, thenchildi
is the left child ofparenti
. - IfisLefti == 0
, thenchildi
is the right child ofparenti
. 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:** ![example1drawio](https://assets.leetcode.com/uploads/2022/02/09/example1drawio.png) - **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:** ![example2drawio](https://assets.leetcode.com/uploads/2022/02/09/example2drawio.png) - **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. **Hint:** 1. Could you represent and store the descriptions more efficiently? 2. Could you find the root node? 3. The node that is not a child in any of the descriptions is the root node.