Leetcode练习(Python):动态规划类:第95题:不同的二叉搜索树 II:给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。

Posted 桌子哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode练习(Python):动态规划类:第95题:不同的二叉搜索树 II:给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。相关的知识,希望对你有一定的参考价值。

题目:

不同的二叉搜索树 II:给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。

思路:

遍历每一个节点,并且得到每个节点的左右子树,然后获得每个子树的样子就可以得出来了。

自己想了半天没法实现,参考了一下网上大神的程序,写的很好,很好理解。

程序:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def generateTrees(self, n: int) -> List[TreeNode]:
        if n <= 0:
            return []
        def auxiliary(begin, end):
            auxiliary_result = []
            if begin > end:
                return [None]
            for index in range(begin, end + 1):
                left_part = auxiliary(begin, index - 1)
                right_part = auxiliary(index + 1, end)
                for left_node in left_part:
                    for right_node in right_part:
                        tree_node = TreeNode(index)
                        tree_node.left = left_node
                        auxiliary_result.append(tree_node)
                        tree_node.right = right_node
            return auxiliary_result
        result = auxiliary(1, n)
        return result 

  

以上是关于Leetcode练习(Python):动态规划类:第95题:不同的二叉搜索树 II:给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。的主要内容,如果未能解决你的问题,请参考以下文章

算法练习LeetCode初级算法之动态规划

LeetCode刷题 --动态规划练习题 --300 最长上升子序列

动态规划dp小练习课堂

算法与LeetCode - 动态规划

动态规划算法入门练习 (python实现)

动态规划之买股票问题