leetcode: 95. Unique Binary Search Trees II
来源:互联网 发布:锐科特思网络 编辑:程序博客网 时间:2024/06/16 09:33
Q
Given an integer 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
AC
# Definition for a binary tree node.class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution(object): def generateTrees(self, n): """ :type n: int :rtype: List[TreeNode] """ return self.buildTree(0, n) def buildTree(self, n1, n2): if n1==n2: return [None] if n1+1 == n2: node = TreeNode(n1+1) node.left = None node.right = None return [node] else: results = [] for x in range(n1, n2): left_list = self.buildTree(n1, x) right_list = self.buildTree(x+1, n2) for left in left_list: for right in right_list: node = TreeNode(x+1) node.left = left node.right = right results.append(node) return results# Time: O(4^n / n^(3/2)) ~= Catalan numbers# Space: O(4^n / n^(3/2)) ~= Catalan numbers# Definition for a binary tree nodeclass TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None def __repr__(self): if self: serial = [] queue = [self] while queue: cur = queue[0] if cur: serial.append(cur.val) queue.append(cur.left) queue.append(cur.right) else: serial.append("#") queue = queue[1:] while serial[-1] == "#": serial.pop() return repr(serial) else: return Noneclass Solution2(object): def generateTrees(self, n): return self.generateTreesRecu(1, n) def generateTreesRecu(self, low, high): result = [] if low > high: result.append(None) for i in xrange(low, high + 1): left = self.generateTreesRecu(low, i - 1) right = self.generateTreesRecu(i + 1, high) for j in left: for k in right: cur = TreeNode(i) cur.left = j cur.right = k result.append(cur) return resultif __name__ == "__main__": print Solution().generateTrees(3)
阅读全文
0 0
- [LeetCode]95.Unique Binary Search Trees II
- [Leetcode] 95. Unique Binary Search Trees II
- LeetCode --- 95. Unique Binary Search Trees II
- [leetcode] 95.Unique Binary Search Trees II
- [leetcode] 95. Unique Binary Search Trees II
- 95. Unique Binary Search Trees II LeetCode
- ***LeetCode 95. Unique Binary Search Trees II
- Leetcode 95. Unique Binary Search Trees II
- LeetCode *** 95. Unique Binary Search Trees II
- 【LeetCode】95. Unique Binary Search Trees II
- LeetCode 95. Unique Binary Search Trees II
- [leetcode]95. Unique Binary Search Trees II
- [leetcode]95. Unique Binary Search Trees II
- [LeetCode] 95. Unique Binary Search Trees II
- LeetCode 95. Unique Binary Search Trees II
- [leetcode] 95. Unique Binary Search Trees II
- Leetcode-95. Unique Binary Search Trees II
- 95. Unique Binary Search Trees II ,leetcode
- 电子商务javaweb b2b b2c o2o平台
- 芝商所比特币期货上市在即,支持者发文力挺
- 配置oracleinstantclient、plsql连接数据库
- 美国前总统候选人Ron Paul推广基于比特币的退休投资工具
- 返回当前页面得url
- leetcode: 95. Unique Binary Search Trees II
- 仿微信自定义TabLayout
- git 命令之 如何将本地新建分支推到服务器上
- HTTP-GET
- “智能迪拜办公室”凭借区块链计划获奖
- 区块链获得获得华尔街的胜利:“现在我们知道它有用了”
- eventbus线程间轻量级传递消息的使用
- 分布式事务
- Android调用系统相机、图库、裁剪图片并压缩上传(适配7.0)