您的位置:首页 > 编程语言 > Python开发

Unique Binary Search Trees II Leetcode Python

2015-01-15 10:43 633 查看
Given n, generate all structurally unique BST's (binary search trees) that store values 1...n.

For example,

Given n = 3, your program should return all 5 unique BST's shown below.

   1         3     3      2      1

    \       /     /      / \      \

     3     2     1      1   3      2

    /     /       \                 \

   2     1         2                 3
confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

这道题目的做法和之前的unique BST略有不同,但主体思想是一致的。选定一个点作为根,依次产生可行的子树,然后把解加到最后的解里面。

The way to solve this problem is to find a root in the given number then construct valid left and right subtrees then append it to the solution. valid condition is left<mid<right

# 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 getTree(self,start,end):
if start>end:
return [None]
solution=[]
for rootval in range(start,end+1):
left=self.getTree(start,rootval-1)
right=self.getTree(rootval+1,end)
for i in left:
for j in right:
root=TreeNode(rootval)
root.left=i
root.right=j
solution.append(root)
return solution
def generateTrees(self, n):
return self.getTree(1,n)


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python BST leetcode