diff --git a/medium/create_binary_tree_from_descriptions.py b/medium/create_binary_tree_from_descriptions.py new file mode 100644 index 0000000..069725f --- /dev/null +++ b/medium/create_binary_tree_from_descriptions.py @@ -0,0 +1,26 @@ +# https://leetcode.com/problems/create-binary-tree-from-descriptions +from typing import Dict, List, Optional + +class TreeNode: + def __init__(self, val=0, left=None, right=None): + self.val = val + self.left = left + self.right = right +class Solution: + def createBinaryTree(self, descriptions: List[List[int]]) -> Optional[TreeNode]: + nodes: Dict[int, TreeNode] = {} + s = set() + for head, next, left in descriptions: + if nodes.get(head) is None: + nodes[head] = TreeNode(head) + if nodes.get(next) is None: + nodes[next] = TreeNode(next) + if left: + nodes[head].left = nodes[next] + else: + nodes[head].right = nodes[next] + s.add(next) + for node in nodes: + if node not in s: + return nodes[node] +