leetcode95
Solution
- 先序遍历的思想,选取剩下的子集中任意一个作为left,一个作为right。建立相应的树。
- 即双重循环的遍历,在循环内部添加root,最后将root 添加到list中去。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def preT(self,start,end):
if start >end:
return [None]
res = []
for root_val in range(start,end+1):
# left 相当于在遍历整个列表
for left in Solution.preT(self,start,root_val-1):
for right in Solution.preT(self,root_val+1,end):
root = TreeNode(root_val)
root.left = left
root.right = right
res.append(root)
return res
def generateTrees(self, n):
return Solution.preT(self,1,n)