# Definition for a binary tree node
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# @return a list of tree node
def dfs(self, start, end):
if start > end: return [None]
res = []
for rootval in range(start,end+1):
#rootval为根节点的值,从start遍历到end
LeftTree = self.dfs(start, rootval-1)
RightTree = self.dfs(rootval+1, end)
for i in LeftTree:
#i遍历符合条件的左子树
for j in RightTree:
#j遍历符合条件的右子树
root = TreeNode(rootval)
root.left = i
root.right = j
res.append(root)
return res
def generateTrees(self, n):
if n==0:return []
return self.dfs(1, n)LeetCode-95-Unique Binary Search Trees II 二叉树
最新推荐文章于 2019-06-28 21:22:37 发布
本文介绍了一种使用深度优先搜索(DFS)递归算法来生成所有可能的不同二叉搜索树的方法。通过遍历所有可能的根节点值并递归地构造左右子树,最终返回所有构造好的树的根节点列表。
376

被折叠的 条评论
为什么被折叠?



