题目大意
https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/
给你一棵二叉查找树,和树上的两个节点,求这两个节点的最近邻祖先。
题目分析
递归,要充分利用二叉查找树的性质。
代码
|
|
https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/
给你一棵二叉查找树,和树上的两个节点,求这两个节点的最近邻祖先。
递归,要充分利用二叉查找树的性质。
|
|
https://leetcode.com/problems/combination-sum-iv/
给你一个数组和一个target值,求数组中的组合的和等于target,121和112,211视为不同的。
动态规划不仅可以解决最优值问题,可以解决很多计数类问题。想解决目标值为target的问题要借助于目标值比target小的子问题。结果数组为dp,所求的为dp[target]。dp[i] = dp[i] + dp[i - x]
,x为nums数组中的值,意思是想解决dp[i],如果dp[i-x]已经解决了,再把x值加入这一组合中就成为一个解了。注意下,dp[0]
为1,因为这是起始情况,比如数组只有一个元素1,target也为1,dp[0]显然得为1的情况下,结果dp[1]
才能为1。
|
|
时间复杂度O(target * num.length)
https://leetcode.com/problems/validate-binary-search-tree/
判断一棵二叉树是不是二叉查找树。
首先要知道二叉查找树的定义是什么,但是根据定义来判断很麻烦,不好写。可以利用二叉查找树的一个等价的性质,中序遍历以后,是一个严格递增的序列。
|
|
时间复杂度O(n),n为树的节点个数