DFS.
Solution:
# T:O(4^n/n^(3/2)) S:O(4^n/n^(3/2))
class Solution:
def dfs(self, start, end):
if start > end:
return [None]
res = []
for rootVal in xrange(start, end + 1):
leftTree = self.dfs(start, rootVal - 1)
rightTree = self.dfs(rootVal + 1, end)
for i in leftTree:
for j in rightTree:
root = TreeNode(rootVal)
root.left = i
root.right = j
res.append(root)
return res
def generateTrees(self, n):
return self.dfs(1, n)
Run Time: 116 ms
No comments:
Post a Comment