分治

95. Unique Binary Search Trees II (Medium)

给定一个数字 n,要求生成所有值为 1...n 的二叉搜索树。

# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def generateTrees(self, n: int) -> List[TreeNode]:
        if n < 1:
            return [None,]
        def generateSubTree(s, e):
            if s > e:
                return [None,]
            res = []
            for i in range(s, e+1):
                leftSubTree = generateSubTree(s, i-1)
                rightSubTree = generateSubTree(i+1, e)
                for l in leftSubTree:
                    for r in rightSubTree:
                        root = TreeNode(i)
                        root.left = l
                        root.right = r
                        res.append(root)
            return res
        return generateSubTree(1, n)
posted @ 2021-12-20 00:14  _无支祁  阅读(33)  评论(0编辑  收藏  举报