题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNo...
分类:
其他好文 时间:
2016-01-25 16:42:10
阅读次数:
183
给定一个二叉搜索树的两个节点,找出他们的最近公共祖先,如, _______6______ / \ ___2__ ___8__ / \ / \ 0 4 7 ...
分类:
其他好文 时间:
2016-01-24 23:48:59
阅读次数:
143
最近需要写范围查询的功能,最简单的应该是B+树吧,在了解B+树的时候,也看到了B-树。于是想先实现B-Tree再实现B+Tree,结果网上并没有找到B-Tree(多路搜索树),于是自己用java实现了一个,经过自己设计了很多测试用例,用Junit(临时学的)测试可用。在这里贴出来,希望能给初学者一点...
分类:
编程语言 时间:
2016-01-20 22:17:06
阅读次数:
207
二叉搜索树(BST,Binary Search Tree)---? 静态查找和动态查找(下一节会讲)? 针对查找,数据如何组织?为什么在前面咱们说的二分查找的效率会那么高?这是因为在查找之前我们就对数据进行了有效的组织。这时候估计有人该有疑问了,咱们说了这么多数据结构但是好像都有很大的限制,例如.....
分类:
其他好文 时间:
2016-01-20 08:43:54
阅读次数:
191
问题:找出二叉搜索树种第 k 小的元素。 一个深度遍历的应用。使用递归、或者借助栈都可以实现深度遍历。本文代码使用递归实现。
分类:
其他好文 时间:
2016-01-10 11:35:01
阅读次数:
154
B. Longtail HedgehogThis Christmas Santa gave Masha a magic picture and a pencil. The picture consists ofnpoints connected bymsegments (they might cro...
分类:
其他好文 时间:
2016-01-09 06:11:55
阅读次数:
181
B树即二叉搜索树:1.所有非叶子结点至多拥有两个儿子(Left和Right);2.所有结点存储一个关键字;3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进...
分类:
其他好文 时间:
2016-01-08 23:37:51
阅读次数:
182
红黑树是一种自平衡二叉搜索树,每个结点都有一个额外的位(bit),代表了结点的颜色(红色或黑色)。这些代表颜色的位用来确保红黑树在插入和删除时保持基本平衡。红黑树不保证完全平衡,但是已经足够使得搜索能在O(log n)时间内完成,n为树中元素的个数。插入和删除操作,伴随树结构的重新构造和重新着色,也...
分类:
其他好文 时间:
2016-01-06 23:34:18
阅读次数:
193
前面我们学习二叉搜索树的时候发如今一些情况下其高度不是非常均匀,甚至有时候会退化成一条长链,所以我们引用一些”平衡”的二叉搜索树。红黑树就是一种”平衡”的二叉搜索树,它通过在每一个结点附加颜色位和路径上的一些约束条件能够保证在最坏的情况下基本动态集合操作的时间复杂度为O(nlgn)....
分类:
编程语言 时间:
2016-01-03 22:11:15
阅读次数:
333
操作包括二叉搜索树的创建,插入,搜索,寻找前驱后继,删除,左右旋转,插入元素为根结点,以及两棵二叉树的合并。二叉树的创建很简单,只需要设置 value, left child, right child 即可。插入的时候递归插入树中合适的位置,通过比较插入元素的值与根结点元素的值,如果小于则递归插入到...
分类:
其他好文 时间:
2015-12-30 23:45:03
阅读次数:
309