给你一个整数 n ,请你生成并返回所有由 n 个节点组成
且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。
思路+代码
搜索二叉树:结点>左子树的数,结点<右子树的数
递归
for i in range(1,n+1):
依次求左,右子树的搜索二叉树
需要递归,不断的求搜索二叉树,直到为None
#Python
classSolution:
def generateTrees(self, n: int)-> List[TreeNode]:
def smallTrees(head, end):if head > end:return[None,]
Trees =[]for i inrange(head, end +1):
leftTrees =smallTrees(head, i -1)
rightTrees =smallTrees(i +1, end)for l in leftTrees:for r in rightTrees:
newTree =TreeNode(i)
newTree.left = l
newTree.right = r
Trees.append(newTree)return Trees
returnsmallTrees(1, n)if n else[]
95. 不同的二叉搜索树 II(中等)题目给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。思路+代码搜索二叉树:结点>左子树的数,结点<右子树的数递归for i in range(1,n+1): 依次求左,右子树的搜索二叉树 需要递归,不断的求搜索二叉树,直到为None#Pythonclass Solution: def generateTrees(self, n: