【leetcode】Unique Binary Search Trees II
2014-05-26 12:12
316 查看
题目:给定整数n,返回所有结果为1,,n 的不重复二叉搜索树。
分析:在构建二叉树的题目中,我们了解到,给定二叉的中序遍历和前序遍历我们可以构建一棵唯一的二叉树,给定中序遍历和后序遍历,我们也能构建一棵唯一的二叉树。现在类似于只给定了中序遍历,那么,其构建出的树是不唯一的,即存在多棵,而具体的数量我们在题目一中计算过,是符合卡特兰的。
我们在构建唯一的二叉树的时候,我们可以用单一的指针去接收返回的子树结点,但是现在子树的结点不只一个,所以我们需要一个指针容器去接收。而以某个数字为节点的树的个数恰好是其左右子树的组合数。
分析:在构建二叉树的题目中,我们了解到,给定二叉的中序遍历和前序遍历我们可以构建一棵唯一的二叉树,给定中序遍历和后序遍历,我们也能构建一棵唯一的二叉树。现在类似于只给定了中序遍历,那么,其构建出的树是不唯一的,即存在多棵,而具体的数量我们在题目一中计算过,是符合卡特兰的。
我们在构建唯一的二叉树的时候,我们可以用单一的指针去接收返回的子树结点,但是现在子树的结点不只一个,所以我们需要一个指针容器去接收。而以某个数字为节点的树的个数恰好是其左右子树的组合数。
//construct the BSFs whose inorder travel is // from start to end. //start and end used to constraint boundary vector<TreeNode*> AddNodes(int start, int end){ if( start > end) return vector<TreeNode*> (1, NULL); //container to store the root of each differ BST vector<TreeNode*> roots; for (int i = start; i <= end; ++i) { //get the left sons vector<TreeNode*> lefts = AddNodes(start, i - 1); //get the right sons vector<TreeNode*> rights = AddNodes(i + 1, end); for (int l = 0; l < lefts.size(); ++l) for (int r = 0; r < rights.size(); ++r) { TreeNode* root = new TreeNode(i); root->left = lefts[l]; root->right = rights[r]; roots.push_back(root); } } return roots; } vector<TreeNode *> generateTrees(int n ) { vector<TreeNode*> roots; roots = AddNodes(1, n); return roots; }
相关文章推荐
- LeetCode 95: Unique Binary Search Trees II
- leetcode — unique-binary-search-trees-ii
- [Leetcode] Unique Binary Search Trees II (Java)
- LeetCode Unique Binary Search Trees II
- [leetcode]95. Unique Binary Search Trees II
- 【Leetcode】Unique Binary Search Trees II
- Unique Binary Search Trees II -- LeetCode
- [leetcode-95]Unique Binary Search Trees II(c++)
- Leetcode-95.Unique Binary Search Trees II(a representative recursion problem)
- 【LEETCODE】95-Unique Binary Search Trees II
- Leetcode Unique Binary Search Trees II
- [leetcode]Unique Binary Search Trees II
- [leetcode] Unique Binary Search Trees II
- leetcode先刷_Unique Binary Search Trees II
- LeetCode:Unique Binary Search Trees I II
- [leetcode] 95.Unique Binary Search Trees II
- LeetCode: Unique Binary Search Trees II [096]
- [Leetcode]Unique Binary Search Trees II
- LeetCode | Unique Binary Search Trees II
- leetcode - Unique Binary Search Trees II