博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leetcode] 95. Unique Binary Search Trees II 解题报告
阅读量:3676 次
发布时间:2019-05-21

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

题目链接:https://leetcode.com/problems/unique-binary-search-trees-ii/

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

思路: 递归构造左右子树。比较困难的是如何存储每一棵树。递归的产生每一个子树的左右节点,构造当前节点,最后可以的得到完整的一棵树。当前i节点的左节点可以是(1,i-1)的所有节点,同样右节点可以是(i+1, n)的所有节点,因此枚举所有的左右节点的可能值,最终得到所有的树。

具体代码如下:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector
DFS(int n, int k1, int k2) { if(k1 > k2) return vector
{NULL}; vector
result; for(int i = k1; i <= k2; i++) { auto vec1 = DFS(n, k1, i-1), vec2 = DFS(n, i+1, k2); for(auto val1: vec1) { for(auto val2: vec2) { TreeNode *root = new TreeNode(i); root->left = val1, root->right = val2; result.push_back(root); } } } return result; } vector
generateTrees(int n) { if(n <=0) return {}; return DFS(n, 1, n); }};

转载地址:http://zslbn.baihongyu.com/

你可能感兴趣的文章
Maven基础学习(全面)
查看>>
oracle之40道经典的sql练习
查看>>
最详细的Spring-data-jpa入门(一)
查看>>
win7/win10下的jdk的安装和环境变量的配置
查看>>
PAT乙级_1077 互评成绩计算 (20 分)_python
查看>>
PAT乙级_1088 三人行 (20 分)_python
查看>>
PAT乙级_1089 狼人杀-简单版 (20 分)_python
查看>>
PAT乙级_1092 最好吃的月饼 (20 分)_python
查看>>
操作系统页表&进程调度Tips
查看>>
RT-Thread 学习笔记:一、通俗易懂学会创建线程
查看>>
转义序列
查看>>
约分最简分式
查看>>
时间换算
查看>>
逆序的三位数
查看>>
JS下拉框实现省市联动
查看>>
JS实现文字无缝滚动
查看>>
JavaScript高级学习(三)
查看>>
JavaScript高级学习(四)
查看>>
JS遍历DOM树
查看>>
JavaScript高级学习(五)——正则表达式
查看>>