输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解法是递归判断,先找根节点,划分左右子树递归求解。边界需要特殊考虑。 AC代码: ...
分类:
其他好文 时间:
2016-04-19 06:11:18
阅读次数:
133
#include using namespace std; template struct BSTNode { K _key; V _value; BSTNode *_left; BSTNode *_right; BSTNode(const K&key,const V&value) :_key(ke ...
分类:
其他好文 时间:
2016-04-18 18:34:55
阅读次数:
118
1. 问题描写叙述 给定一个二叉搜索树,找出第k小的元素。 注意:能够如果k总是存在,1≤k≤BST总元素数1 \le k \le BST总元素数。 2. 方法与思路 依据二叉搜索树的特点。中序遍历的结果即是排序好的数组。那么找出第k小的数,仅仅须要先进行一次中序遍历就可以。 /** * Defin ...
分类:
其他好文 时间:
2016-04-17 20:44:37
阅读次数:
148
思想:做一遍DFS,用dfn[i]表示编号为i的节点在DFS过程中的访问序号(也可以叫做开始时间)用low[i]表示i节点DFS过程中i的下方节点所能到达的开始时间最早的节点的开始时间。初始时dfn[i]=low[i]在DFS过程中会形成一搜索树。在搜索树上越先遍历到的节点,显然dfn的值就越小。D ...
分类:
编程语言 时间:
2016-04-17 17:32:11
阅读次数:
137
B-树 B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点。下图是 B-树的简化图. B-树有如下特点: 所有键值分布在整颗树中; 任何一个关键字出现且只出现在一个结点中; 搜索有可能在非叶子结 ...
分类:
数据库 时间:
2016-04-17 14:31:04
阅读次数:
192
平衡二叉树(AVL树) AVL树是一种二叉搜索树,并且每个节点的左右子树高度之差最多为1。AVL树是第一个在最坏的情况下保证以O(logn)的时间进行搜索,插入和删除操作的数据结构,AVL树能在对数时间内完成操作的主要思想是在插入和删除的时候花一些时间来保持树的平衡,使树的高度总在O(logn)范围 ...
分类:
其他好文 时间:
2016-04-16 21:32:30
阅读次数:
241
二叉搜索树 又称二叉排序树,它或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不为空,则左子树上所有节点的值均小于它的父节点的值,若它的右字树不为空,则右子树上所有节点的值均大于它的父节点的值,它的左右子树叶分别是二叉排序树。二叉排序树能高效的实现查找,插入,删除。比较复杂的是删除操作后如何 ...
分类:
其他好文 时间:
2016-04-16 21:24:08
阅读次数:
215
http://blog.csdn.net/tonyxf121/article/details/8393545 B+/-Tree原理 B-Tree介绍 B-Tree是一种多路搜索树(并不是二叉的): 1.定义任意非叶子结点最多只有M个儿子;且M>2; 2.根结点的儿子数为[2, M]; 3.除根结点以 ...
分类:
数据库 时间:
2016-04-16 15:23:14
阅读次数:
266
1. BST树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键 ...
分类:
其他好文 时间:
2016-04-16 10:46:44
阅读次数:
155
这次贴上二叉搜索树的实现,搜索插入删除我都实现了递归和非递归两种版本(递归函数后面有_R标识) 1 #pragma once 2 #include<iostream> 3 using namespace std; 4 5 6 template<class K,class V> 7 struct BS ...
分类:
其他好文 时间:
2016-04-15 11:51:58
阅读次数:
141