二分查找的一点思考二分查找算法实现#define
LOCAL#include#include#includeint const MAX_N=21) { int mid=(ub+lb)/2;
if(a[mid]>=k) { ub=m...
分类:
其他好文 时间:
2014-05-13 21:53:37
阅读次数:
328
原题地址:http://oj.leetcode.com/problems/convert-sorted-array-to-binary-search-tree/题意:将一个排序好的数组转换为一颗二叉查找树,这颗二叉查找树要求是平衡的。解题思路:由于要求二叉查找树是平衡的。所以我们可以选在数组的中间那...
分类:
编程语言 时间:
2014-05-12 21:44:57
阅读次数:
379
原题地址:http://oj.leetcode.com/problems/convert-sorted-list-to-binary-search-tree/题意:将一条排序好的链表转换为二叉查找树,二叉查找树需要平衡。解题思路:两个思路:一,可以使用快慢指针来找到中间的那个节点,然后将这个节点作为...
分类:
编程语言 时间:
2014-05-12 21:07:00
阅读次数:
405
Given a singly linked list where elements are
sorted in ascending order, convert it to a height balanced BST.1.
将LinkedList的值保存到一个数组中,转化成Convert Sorte...
分类:
其他好文 时间:
2014-05-12 05:53:09
阅读次数:
367
Given a binary tree, determine if it is a valid
binary search tree (BST).Assume a BST is defined as follows:The left subtree of
a node contains only n...
分类:
其他好文 时间:
2014-05-11 06:46:32
阅读次数:
366
这道题其实跟二叉搜索树没有什么关系,给定n个节点,让你求有多少棵二叉树也是完全一样的做法。思想是什么呢,给定一个节点数x,求f(x),f(x)跟什么有关系呢,当然是跟他的左右子树都有关系,所以可以利用其左右子树的结论,大问题被成功转化成了小问题。最熟悉的方法是递归和dp,这里显然有大量的重复计算,用dp打表好一些。
后来实验的同学说,这其实是一个Catalan数,上网查了一下,果然啊。Catal...
分类:
其他好文 时间:
2014-05-09 14:47:53
阅读次数:
229
可能没想到简单方法的人,在上一题中就把这一题给做了。怎样把所有的树都生成出来呢?方法肯定用的是递归,但是有个致命的问题,如果做好了根节点再递归,那么出来的很多树都公用一个根节点,结果肯定是乱七八糟的。
怎么做?其实做法跟之前求个数在思想上是高度统一的,先把所有的左右子树都求出来,然后把它们之间的所有组合都连接到一个新建立出来的根节点,既然是分开左右子树,很容易想到类似二分的思想,每次指定的不是一...
分类:
其他好文 时间:
2014-05-09 14:13:55
阅读次数:
376
基本C/C++、STL(vector、set、map、queue、string、algorithm)枚举、贪心、递归、分治、递推、模拟构造、位运算、常数优化数据结构队列、堆、栈、链表排序(插入、冒泡、快速、归并、堆、桶、基数)二分查找、散列表、并查集、哈夫曼树排序二叉树、左偏树、平衡树(Splay/...
分类:
其他好文 时间:
2014-05-09 08:10:36
阅读次数:
338
这是一道好题,思路虽然有,但是提交之后总是有数据过不了,又按照数据改改改,最后代码都没法看了。收到的教训是如果必须为自己的代码加上很多很多特殊的限定,来过一些特殊的数据的话,说明代码本身有很大的漏洞。
这道题,我想到了要用两个指针保存乱序的节点,甚至想到了用一个pre指针来保存前面一个节点,但是问题出在哪里呢?我觉得应该是自己对树的遍历理解的不够深刻。既然知道了二叉搜索树一定是用中序遍历的,那么...
分类:
其他好文 时间:
2014-05-09 01:54:42
阅读次数:
250