1 概念 又称二叉查找树,简称BST。具有以下性质的二叉树: (1) 若左子树非空,则左子树上所有结点值均小于根结点的值 (2) 若右子树非空,则右子树上所有结点值均大于根结点的值 (3) 左,右子树本身也分别是一棵二叉排序树 也是一个递归的数据结构。下图是一个二叉排序树。 对其进行中序遍历得到一个 ...
分类:
编程语言 时间:
2016-05-29 10:54:39
阅读次数:
272
我们上回说到二叉查找树已经很接近我们的目标了,在很多情况下性能都很不错,但是唯独在删除上不行,一旦删除操作做多了就会失去平衡,那么,这回,我们来说说如何做一个平衡查找树,首先介绍一下2-3查找树
2-3树介绍2-3树是一种特殊的二叉树,它允许一个节点中出现2个key。
2节点:1个key,2个孩子
3节点,2个key,3个孩子
它有几个特性:
符合中序遍历的顺序:左孩小于最左key,中间孩子在左右k...
分类:
编程语言 时间:
2016-05-27 11:56:36
阅读次数:
127
红黑树(Red Black Tree) 是一种自平衡二叉查找树。红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。红黑树可以在O(log n)时间内完成查找,插入和删除操作。
二叉搜索树可以看
二叉搜索树
AVL树可以看
AVL树的插入与删除
1. 红黑树的性质
红黑树的自平衡依赖于它的以下性质:
性质1. 结点是红...
分类:
其他好文 时间:
2016-05-27 11:27:05
阅读次数:
187
红黑树介绍
红黑树是一种简单的实现2-3树的数据结构,它方便的把我们之前实现的二叉搜索树改造成了一棵2-3树。它的核心思想是用一条左倾链(红链)作为“胶水”把二叉树的两个节点给粘起来,形成一个3节点。
把红链看成水平的,看是不是和2-3树就一样了BST改造成红黑树有一些约定:
- 每个节点最多只有一个红链与之相连(连父亲和孩子)
- 每条从root到null的路径,都是同样的黑链数(绝对黑平...
分类:
编程语言 时间:
2016-05-26 01:09:50
阅读次数:
261
Trie树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。 典型应用是用于统计和排序大量的字符串(但不仅限于字符串), 所以经常被搜索引擎系统用于文本词频统计。 优点 利用字符串的公共前缀来节约存储空间,最大限度的减少无谓的字符串比较,查询效率比哈希表高。 比如说我们想储存3个单词,sk ...
分类:
其他好文 时间:
2016-05-25 00:15:34
阅读次数:
329
二叉排序树又称二叉查找树。它或者是一颗空树,或者是具有如下性质的二叉树: 1.如果左子树不空,那么左子树上的所有节点均小于它的根节点的值; 2.如果右子树不空,那么右子树上的所有节点均大于它的根节点的值; 3.左右字树也分别是二叉排序树。 关于二叉排序树的建立和遍历的代码实现如下: ...
分类:
编程语言 时间:
2016-05-23 17:24:25
阅读次数:
315
二叉查找树是个好东西,他让查找,插入,删除,这些常用操作变得高效,但是,他是存在问题的,那就是,在坏的输入序列下,树会退化成链表,这就很尴尬了,于是为了避免这种情况的发生,我们需要一种数据结构,可以自动对树进行调整,我们希望树尽量平衡,于是我们使用平衡因子作为指标,保持任意节点左右子树深度差不超过1 ...
分类:
编程语言 时间:
2016-05-21 06:36:33
阅读次数:
274
一,问题描述 构建一棵二叉树(不一定是二叉查找树),求出该二叉树中某两个结点的最低公共父结点。借用一张图如下: 结点8 和 结点5 的最低公共父结点为 结点2 二,二叉树的构建 与 求二叉树中第K层结点的个数 文章中的第二点:二叉树构建相同 三,求解最低公共父结点的算法实现 有两种思路,一种是通过中 ...
分类:
其他好文 时间:
2016-05-20 11:44:25
阅读次数:
228
定义 如果中序遍历2-3查找树,就可以得到排好序的序列。在一个完全平衡的2-3查找树中,根节点到每一个为空节点的距离都相同。 查找 在进行2-3树的平衡之前,我们先假设已经处于平衡状态,我们先看基本的查找操作。 2-3树的查找和二叉查找树类似,要确定一个键是否属于2-3树,我们首先和其跟节点进行比较 ...
分类:
其他好文 时间:
2016-05-20 11:40:20
阅读次数:
162
基本概念
结点的层次(Level)从根开始定义,根为第一层,根的孩子为第二层。
二叉树的高度:树中结点的最大层次称为树的深度(Depth)或高度。
二叉树
在计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆。二叉树的每个结点至多只有二棵子树(不存在...
分类:
其他好文 时间:
2016-05-19 17:47:45
阅读次数:
267