LeetCode-Unique Binary Search Trees II-唯一二叉搜索树-递归
https://oj.leetcode.com/problems/unique-binary-search-trees-ii/
跟二叉树个数计数的那道题类似,不同的是需要把所有的可能都返回,并整合成结果。
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<TreeNode *> Solve(int s,int num){ vector<TreeNode *> res; if(num==0) { res.push_back(NULL); return res; } for(int i=0;i<num;i++) { vector<TreeNode *> lv=Solve(s,i); vector<TreeNode *> rv=Solve(s+i+1,num-i-1); int ln=lv.size(),rn=rv.size(); for(int j=0;j<ln;j++) for(int k=0;k<rn;k++){ TreeNode *r=new TreeNode(s+i+1); r->left=lv[j];r->right=rv[k]; res.push_back(r); } } return res; } vector<TreeNode *> generateTrees(int n) { return Solve(0,n); } };