LeetCode-95. Unique Binary Search Trees II
来源:互联网 发布:php记事源码 编辑:程序博客网 时间:2024/06/06 19:43
题目描述
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
解题思路
利用分治算法的思想,不断将问题划分为子问题去求解,有一个问题就是关于节点克隆的问题,如果在每出现一种情况的时候都能新建root节点是可以避免掉这个问题的。
代码
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { //List<TreeNode> result = new LinkedList<TreeNode>(); public List<TreeNode> generateTrees(int n) { if(n<=0) return new LinkedList<TreeNode>(); return generateCore(1,n);// List<TreeNode>[] temResult = new List[n+1];// temResult[0] = new LinkedList<>();// temResult[0].add(null);// temResult[1]=new LinkedList<>();// temResult[1].add(new TreeNode(1));// for(int i=2;i<=n;i++){// List<TreeNode> temList = new LinkedList<TreeNode>();// for(int j=1;j<=i;j++){// for(TreeNode left:temResult[j-1]){// for(TreeNode right:generateCore(j+1,i)){// TreeNode root = new TreeNode(j);// root.left = left;// root.right = right;// temList.add(root);// }// }// }// temResult[i]=temList;// }// return temResult[n]; } private List<TreeNode> generateCore(int start,int end){ List<TreeNode> tem = new LinkedList<TreeNode>(); if(start > end){ tem.add(null); return tem; } for(int i=start;i<=end;i++){ List<TreeNode> leftList = generateCore(start,i-1); List<TreeNode> rightList = generateCore(i+1,end); for(TreeNode left:leftList){ for(TreeNode right:rightList){ //这里每一种情况都创建一个新的root节点,避免后续操作覆盖 TreeNode root = new TreeNode(i); root.left = left; root.right = right; tem.add(root); } } } return tem; }}
阅读全文
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
- Linux 查看服务器开放的端口号
- 第7周 【项目一】 建立顺序环形队列算法库
- Maven的本地仓库、中心仓库、私服
- idea创建maven项目
- Got error: 1449: The user specified as a definer ('root'@'%') does not exist
- LeetCode-95. Unique Binary Search Trees II
- 算法第四版入门:牛顿迭代法
- java使用正则去除html标签
- 设计模式之组合模式
- Qt,Qt Creator,minGW,VS关系
- 第四周项目一 建立单链表
- 你会使用Quick BI 制作企业数据分析报表吗?
- jetpack
- Qml自定义复选框