Medium
Create Binary Tree From Descriptions — Python
Full explanation · Time O(n) · Space O(n)
# Time: O(n)
# Space: O(n)
# tree
class Solution(object):
def createBinaryTree(self, descriptions):
"""
:type descriptions: List[List[int]]
:rtype: Optional[TreeNode]
"""
nodes = {}
children = set()
for p, c, l in descriptions:
parent = nodes.setdefault(p, TreeNode(p))
child = nodes.setdefault(c, TreeNode(c))
if l:
parent.left = child
else:
parent.right = child
children.add(c)
return nodes[next(p for p in nodes.iterkeys() if p not in children)]