二叉查找树是一种树数据结构,它与普通的二叉树最大的不同就是二叉查找树满足一个性质:对于树中的任意一个节点,均有其左子树中的所有节点的关键字值都不大于该节点的关键字值,其右子树中的任意一个节点的关键字值都不小于该节点的关键字值。在二叉查找树上可以进行搜索、取最小值、取最大值、取指定节点的前驱、取指定节点的后继以及插入和删除节点操作,因此二叉查找树和堆(大顶堆和小顶堆)一样,也可以做优先队列,都能够在 O(lgn) 的时间内取得集合的最大值和最小值。一个二叉查找树的期望高度为O(lgn),因此在二叉查找树上的基...
分类:
其他好文 时间:
2014-08-27 01:40:47
阅读次数:
273
读写锁 有读优先,写优先。读优先: 即同时有多个读写线程在等待一个条件时,先处理读,后处理写。 实现:写进程获得写锁时,先判断读的引用计数,若0,则继续判断是否有其他线程已获得写权限,若有则循环等待阻塞等待至无,然后继续判断读的引用计数然后继续判断写权限,直至无,然后才对写加锁 ...
分类:
其他好文 时间:
2014-08-24 17:55:42
阅读次数:
173
题目链接:uva 10428 - The Roots
题目大意:给定一个n次一元多项式,求出所有解。
解题思路:牛顿迭代法,对于任意给定x,通过牛顿迭代法可以趋近距离x最近的解x0。每次找到一个解后,用多项式除法除掉x?x0后继续求解。
牛顿迭代法:xi+1=xi?f(x)f′(x)
#include
#include
#include
using namesp...
分类:
其他好文 时间:
2014-08-21 11:31:34
阅读次数:
233
题目链接:
huangjing
思路:
输出路径的最短路变种问题。。这个题目在于多组询问,那么个人觉得用floyd更加稳妥一点。还有就是在每个城市都有过路费,所以在floyd的时候更改一下松弛条件即可。。那么输出路径怎么办呢??我采用的是输出起点的后继而不是终点的前驱。。因为我们关心的是路径字典序最小,关心的是起点的后继。。。那么打印路径的时候就直接从前向后打印,这个和dijkstra的...
分类:
其他好文 时间:
2014-08-21 09:50:13
阅读次数:
296
5 / \ 2 6 / \ \ 1 4 7 / 3class Node{ Node left; Node right; Node parent; int val;}/**1.如果有右子树,则结果为右子树的最左节点。...
分类:
其他好文 时间:
2014-08-21 01:30:33
阅读次数:
216
呵呵,这个题不能直接删除已知的结点,因为是单链表,不知道前驱,只知道
后继结点,直接删除会使链表断开。不过我们可以删除已知结点的后继结点,
把后继结点的值赋值给已知结点。
#include
struct Node
{
int data;
Node* next;
};
bool removeNode(Node* vNode)
{
if (vNode == NULL || vNo...
分类:
其他好文 时间:
2014-08-20 01:25:45
阅读次数:
174
原文:Installshield关于.NET安装时需要重启动的处理办法,以及延伸出的重启后继续安装的安装包的一点想法很多朋友做安装包的时候,所打包的软件需要.NET Framework之类的环境,他们会检测系统是否已经安装了.NET,如果没有,则调用.NET安装包来安装。但是.NET安装完是需要重启...
分类:
Web程序 时间:
2014-08-19 18:44:56
阅读次数:
190
题目:
基于中序遍历找到一个结点的后继结点。
分析:
首先明确中序遍历,顺序为:左--->根----->右
假设当前结点为p。
有两种情况:
1.当p有右子树时,那么其右子树的最左结点即为所求:
2.当p没有右子树时,有下面两种情况:
沿着p向上找,如果p的父结点的左孩子是p,那么该父结点即为所求,否则继续向上找。
...
分类:
其他好文 时间:
2014-08-19 16:39:15
阅读次数:
216
题目:给出二叉树的一个结点,返回它中序遍历顺序的下一个结点。思路:如果有指向父亲的结点,则:如果当前结点有右儿子,或者当前结点是根结点,则后继结点为右子树的最左叶节点;否则,如果当前结点是父结点的左儿子,则后继结点就是父结点;(其实是第三种情况的一个特例,即自己是第0代祖先,返回第一代祖先)否则,向...
分类:
其他好文 时间:
2014-08-17 15:34:02
阅读次数:
292
我们熟悉了java单向链表的模拟,现在我就必须开始双向链表的模拟的.
1.基础结构对象DuLNode
public class DuLNode {
private Object data;// 存放结点值
private DuLNode prior; // 前驱结点的引用
private DuLNode next; // 后继结点的引用
public DuLNode()...
分类:
其他好文 时间:
2014-08-17 13:07:32
阅读次数:
278