[leetcode][tree] Unique Binary Search Trees

来源:互联网 发布:编程课程有什么 编辑:程序博客网 时间:2024/06/05 18:22

题目:

Given n, how many structurally unique BST's (binary search trees) that store values 1...n?

For example,
Given n = 3, there are a total of 5 unique BST's.

   1         3     3      2      1    \       /     /      / \      \     3     2     1      1   3      2    /     /       \                 \   2     1         2                 3
递归实现(存在大量的重复计算,所以会超时)

class Solution {public:    int numTrees(int n) {if (n <= 0) return 0;if (n <= 2) return n;int res = 0;for (int i = 1; i <= n; ++i){int numTreesOfLeftChild = numTrees(i - 1);int numTreesOfRightChild = numTrees(n - i);if (0 == numTreesOfLeftChild || 0 == numTreesOfRightChild) res += numTreesOfLeftChild + numTreesOfRightChild;else res += numTreesOfLeftChild * numTreesOfRightChild;}return res;}};



动态规划(用table记录)

<pre name="code" class="cpp">class Solution {public:    int numTrees(int n) {int *table = new int[n+1];//table[i]表示i个数能形成的不同二叉树的个数for (int i = 0; i < 3; ++i) table[i] = i;//table初始化for (int i = 3; i <= n; ++i){//求i个数能形成多少种二叉树table[i] = 0;for (int j = 1; j <= i; ++j){//table[i]等于分别由1...i做根节点时可以形成的二叉树的个数的总和int numTreesOfLeftChild = table[j - 1];//左子树节点个数为j-1int numTreesOfRightChild = table[i - j];//右子树节点个数为i-jif (0 == numTreesOfLeftChild || 0 == numTreesOfRightChild) table[i] += numTreesOfLeftChild + numTreesOfRightChild;//当左右子树中有一棵为空时else table[i] += numTreesOfLeftChild * numTreesOfRightChild;//左右子树都不为空时}}int res = table[n];delete[]table;return res;}};





0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 菜园里有好多虫怎么办 心里莫名的急该怎么办 老感觉心烦气燥怎么办 什么事都不想做怎么办心里烦躁 咳嗽流鼻涕身体发热怕冷怎么办 不感冒流清鼻涕怎么办 刚怀孕感冒了怎么办鼻塞流鼻涕 孕妇打喷嚏流鼻涕怎么办速效办法 宝宝流鼻涕一个月了怎么办 一个月婴儿感冒咳嗽流鼻涕怎么办 怎么办感冒能好得快些 一个月的宝宝流鼻涕怎么办 鼻炎犯了一直流鼻涕怎么办 宝宝流鼻涕鼻子擦破了怎么办 宝宝流鼻涕鼻子擦红了怎么办 上班忘记穿内衣了怎么办 早上上班忘记穿内衣了怎么办 高中知识都忘了怎么办 留鼻涕跟水一样怎么办 鼻涕像水一样流怎么办 肩膀很疼怎么办睡不着觉 夏天穿内衣出汗后很臭怎么办 脸过敏后严重缺水怎么办 过敏后脸上反复出现湿疹怎么办 孕妇脸上长湿疹过敏红肿怎么办 一岁宝宝一直流鼻涕怎么办 三岁宝宝一直流鼻涕怎么办 3岁宝宝一直流鼻涕不好怎么办 7岁半边鼻子不通气怎么办 感冒流鼻涕鼻子不通气怎么办 鼻子不通气干的怎么办 7个月婴儿流鼻涕怎么办 鼻子火辣辣的光想流鼻涕怎么办? 三岁宝宝鼻塞流鼻涕怎么办 一岁宝宝感冒流鼻涕鼻塞怎么办 1岁宝宝鼻塞流鼻涕怎么办 一岁多宝宝感冒鼻塞流鼻涕怎么办 宝宝鼻塞流鼻涕怎么办速效办法 八个月宝宝感冒流鼻涕鼻塞怎么办 7岁儿童流清鼻涕怎么办 1岁的宝宝流鼻涕怎么办