📅  最后修改于: 2023-12-03 15:28:04.104000             🧑  作者: Mango
二叉搜索树(Binary Search Tree,简称BST)是一种常用的数据结构,它的左子树上的所有节点均小于该节点,右子树上的所有节点均大于该节点。给定一个数组,我们可以根据它构造出多种不同形态的BST。本文的主要目的是计算生成相同二叉搜索树的给定数组的排列。
def generateTrees(n):
if n == 0:
return []
return generateSubtrees(1, n)
def generateSubtrees(start, end):
if start > end:
return [None]
res = []
for i in range(start, end + 1):
leftTrees = generateSubtrees(start, i - 1)
rightTrees = generateSubtrees(i + 1, end)
for left in leftTrees:
for right in rightTrees:
root = TreeNode(i)
root.left = left
root.right = right
res.append(root)
return res