摘要:
前驱节点 前驱节点的值小于该节点的值,是该节点左子树中值最大的 后继节点 后继节点的值大于该节点的值,是该节点右子树中值最小的 因为二叉搜索树的中序遍历出来的结果就是一棵树节点上的值的升序排序,所以一个数的前驱节点的值就是比它小一个的数,后继节点的值就是比它大一个的节点 找前驱节点有以下情况: (1 阅读全文
摘要:
题目: 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 这道题在leetCode上难度为中等,但我觉得其实只要掌握了二叉搜索树遍历的特点就很好解决了。二叉搜索树的中序遍历顺序是由低到高 阅读全文
摘要:
题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 阅读全文
摘要:
题目描述: 给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。 示例: 输入: 3 输出: [ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3] ] 上一题(Leetcode94. 阅读全文
摘要:
给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: G(0)=G(1)=1; G(n+1)=2(2n+1)G(n)/(n+2) class Solution { public: int numTrees(int n) { long G = 1; for(int i = 阅读全文