博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode | Unique Binary Search Trees II
阅读量:5098 次
发布时间:2019-06-13

本文共 1627 字,大约阅读时间需要 5 分钟。

 

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

 

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; left = null; right = null; } * } */

 

public class Solution {	public ArrayList
generateTree(int start, int end) { ArrayList
result = new ArrayList
(); if (start > end) { result.add(null); return result; } ArrayList
leftTree = new ArrayList
(); ArrayList
rightTree = new ArrayList
(); for (int i = start; i <= end; i++) { //从start到end,选取每一个数尝试构造BST leftTree = generateTree(start, i-1); //取小于i的数构造i的左子树 rightTree = generateTree(i+1, end); //取大于i的数构造i的右子树,以此来保证i的二叉查找树有序性 for (int j = 0; j < leftTree.size(); j++) { for (int k = 0; k < rightTree.size(); k++) { //取i作为root构造BST,共有num_left*num_right种方式 TreeNode curNode = new TreeNode(i + 1); curNode.left = leftTree.get(j); //left、right是递归得到的root的集合,相当于list的每个节点都是一颗二叉查找树 curNode.right = rightTree.get(k); //将每一种可能的组合,接到当前的root(i)上组成一颗BST result.add(curNode); } } } return result; } //主调用函数:返回的List是每一棵树的root的集合,List.length = n的二叉搜索树的个数 public ArrayList
generateTrees(int n) { return generateTree(0, n-1); }}

 

转载于:https://www.cnblogs.com/dosmile/p/6444449.html

你可能感兴趣的文章
回调没用,加上iframe提交表单
查看>>
socket总结
查看>>
(安卓)一般安卓开始界面 Loding 跳转 实例 ---亲测!
查看>>
元素和为目标值的子矩阵数量
查看>>
POJ-1287.Network(Kruskal + Prim + Prim堆优化)
查看>>
Mysql 索引优化 - 1
查看>>
LeetCode(3) || Median of Two Sorted Arrays
查看>>
JSDoc规范
查看>>
ssh命令
查看>>
数据库中事务的浅析
查看>>
动态更改标题内容
查看>>
JAVA学长
查看>>
Spring AOP
查看>>
内置函数:abs_all_any
查看>>
【转】【项目管理与构建】Maven
查看>>
单链表中是否有环之java实现
查看>>
Python — magic method
查看>>
B*树
查看>>
HDU - 5701 中位数计数
查看>>
Hibernate学习笔记-Hibernate关系映射
查看>>