LCA问题的tarjan解法模板 LCA问题 详细 1、二叉搜索树上找两个节点LCA 1 public int query(Node t, Node u, Node v) { 2 int left = u.value; 3 int right = v.value; 4 5 //二叉查找树内,如果左结 ...
分类:
其他好文 时间:
2016-04-03 22:11:19
阅读次数:
198
二叉排序树
一棵自平衡的二叉排序树(二叉搜索树)
生成二叉排序树的过程是非常容易失衡的,最坏的情况就是一边倒(只有右/左子树),这样会导致二叉树的检索效率大大降低(O(n))。
为了维持二叉树的平衡,有各种的算法,如:AVL,SBT,伸展树,TREAP ,红黑树等等。
红黑树红黑树需要满足5条性质:
- 节点非红即黑
- 根节点是黑色
- 所有NULL结点称为叶子节点,且...
分类:
其他好文 时间:
2016-04-01 18:08:22
阅读次数:
164
判断两序列是否为同一二叉搜索树序列 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。 接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。 接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两 ...
分类:
其他好文 时间:
2016-03-31 23:13:23
阅读次数:
295
一.树 树的基本术语 ①结点的度(Degree):结点的子树个数 ②树的度:树的所有结点中最大的度数 ③叶结点(Leaf):度为0的结点 ④父结点(Parent):有子树的结点是其子树的根结点的父结点 ⑤子结点(Child):若A结点是B结点的父结点,则称B结点是A结点的子结点;子结点也称孩子结点。 ...
分类:
其他好文 时间:
2016-03-29 19:18:27
阅读次数:
311
AVL树的定义 一种自平衡二叉查找树,中面向内存的数据结构。 二叉搜索树T为AVL树的满足条件为: T是空树 T若不是空树,则TL、TR都是AVL树,且|HL-HR| key){ 90 root.left=insert(root.left,key); ... ...
分类:
其他好文 时间:
2016-03-28 18:35:02
阅读次数:
174
树:非顺序数据结构,对于存储需要快速查找的数据非常有用。 二叉树:二叉树中的节点最多只能有两个子节点(左侧子节点和右侧子节点)。这些定义有助于我们写出更高效的向/从树中插入、查找和删除节点的算法。 二叉搜索树:二叉树的一种,但是它只允许你在左侧节点存储(比父节点)小的值,在右侧节点存储(比父节点)大 ...
分类:
编程语言 时间:
2016-03-28 11:52:57
阅读次数:
323
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。 输入包含若干组测试数据。每
分类:
其他好文 时间:
2016-03-22 23:17:48
阅读次数:
852
定义: (维基百科:https://en.wikipedia.org/wiki/Depth-first_search) 深度优先搜索算法(Depth-First-Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v
分类:
其他好文 时间:
2016-03-22 22:08:59
阅读次数:
260
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中; 否则,如果查询关键字比结点
分类:
其他好文 时间:
2016-03-16 19:03:01
阅读次数:
209