首页 > 其他 > 详细

95. Unique Binary Search Trees II

时间:2020-07-02 22:59:10      阅读:63      评论:0      收藏:0      [点我收藏+]
package LeetCode_95

/**
 * 95. Unique Binary Search Trees II
 * https://leetcode.com/problems/unique-binary-search-trees-ii/description/
 * https://zxi.mytechroad.com/blog/uncategorized/leetcode-95-unique-binary-search-trees-ii/
 *
 * Given an integer n, generate all structurally unique BST‘s (binary search trees) that store values 1 ... n.

Example:
Input: 3
Output:
[
[1,null,3,2],
[3,2,null,1],
[3,1,null,null,2],
[2,1,3],
[1,null,2,null,3]
]
 * */
class TreeNode(var `val`: Int) {
    var left: TreeNode? = null
    var right: TreeNode? = null
}

class Solution {
    /*
    * solution: Recursion, Time complexity:O(3^n), Space complexity:O(3^n)
    * left sub tree can be generated in the same way for n_l = l..i-1
    * left sub tree can be generated in the same way for n_r = i+1..n
    * */

    fun generateTrees(n: Int): List<TreeNode?> {
        if (n == 0) {
            return ArrayList<TreeNode>()
        }
        return genTree(1, n)
    }

    private fun genTree(left: Int, right: Int): List<TreeNode?> {
        val result = ArrayList<TreeNode?>()
        if (left > right) {
            result.add(null)
            return result
        }
        for (i in left until right) {
            for (leftTree in genTree(left, i - 1)) {
                for (rightTree in genTree(i + 1, right)) {
                    val root = TreeNode(i)
                    root.left = leftTree
                    root.right = rightTree
                    result.add(root)
                }
            }
        }
        return result
    }
}

 

95. Unique Binary Search Trees II

原文:https://www.cnblogs.com/johnnyzhao/p/13227564.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!