概要本章介绍伸展树。它和"二叉查找树"和"AVL树"一样,都是特殊的二叉树。在了解了"二叉查找树"和"AVL树"之后,学习伸展树是一件相当容易的事情。和以往一样,本文会先对伸展树的理论知识进行简单介绍,然后给出C语言的实现。后序再分别给出C++和Java版本的实现;这3种实现方式的原理都一样,选择其...
分类:
编程语言 时间:
2015-02-02 22:55:27
阅读次数:
385
平衡二叉树(Balanced binary tree)是由阿德尔森-维尔斯和兰迪斯(Adelson-Velskii and Landis)于1962年首先提出的,所以又称为AVL树。
定义:平衡二叉树或为空树,或为如下性质的二叉排序树:
(1)左右子树深度之差的绝对值不超过1;
(2)左右子树仍然为平衡二叉树.
平衡因子BF=左子树深度-右子树深度....
分类:
其他好文 时间:
2015-02-02 12:37:55
阅读次数:
343
树,一种十分优美的数据结构,因为它本身就具有的递归性,所以它和子树见能相互传递很多信息,还因为它作为被限制的图在上面可进行的操作更多,所以各种用于不同地方的树都出现了,二叉树、三叉树、静态搜索树、AVL树,线段树、SPLAY树,后缀树等等.. 枚举那么多种数据结构只是想说树方面的内容相当多,本...
分类:
其他好文 时间:
2015-01-31 14:28:37
阅读次数:
185
二叉排序树->查找性能取决于树高度,失衡->AVL/红黑树->外排,减少IO->降低树高->多度->一次载入多个元素->节点存储多个元素->多路查找树B-树->基于范围查找->B+树平衡查找树(AVL树)在出现失衡,立即进行调整。可以维持最好的性能O(logn)红黑树是一种平衡二叉查找树,对节点颜色...
分类:
其他好文 时间:
2015-01-28 15:55:44
阅读次数:
282
题目:Given an array where elements are sorted in ascending order, convert it to a height balanced
BST.
思路:给出一个排序的数组,如何构造一个平衡二叉查找树?平衡二叉查找树要求任一结点的左右子树的高度差不能超过一,也叫做高度平衡树。如果让我们从一个排序数组中选取一个元素做树的根,我们会选择哪一个...
分类:
编程语言 时间:
2015-01-16 16:51:25
阅读次数:
237
原文:6天通吃树结构—— 第四天 伸展树 我们知道AVL树为了保持严格的平衡,所以在数据插入上会呈现过多的旋转,影响了插入和删除的性能,此时AVL的一个变种
伸展树(Splay)就应运而生了,我们知道万事万物都遵循一个“八二原则“,也就是说80%的人只会用到20%的数据,比如说我们
的“QQ输入法”...
分类:
其他好文 时间:
2015-01-16 12:53:25
阅读次数:
129
一. 介绍 在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis,他们在196...
分类:
其他好文 时间:
2015-01-14 12:43:01
阅读次数:
194
一、问题描述实现3种树中的两种:红黑树,AVL树,Treap树二、算法原理(1)红黑树红黑树是一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是red或black。红黑树满足以下五个性质:1) 每个结点或是红色或是黑色2) 根结点是黑色3) 每个叶结点是黑的4)如果一个结点是红的,则...
分类:
编程语言 时间:
2015-01-14 06:11:18
阅读次数:
287
平衡二叉树平衡二叉树又称AVL树。它或者是一颗空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差绝对值不超过1.若将二叉树上节点的平衡因子BF(Balance Facter)定义为该节点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有结点的平衡因子只...
分类:
其他好文 时间:
2015-01-13 07:52:12
阅读次数:
198
1. 红黑树(RED-BLACK TREE)引言:红黑树(RBT)可以说是binary-search tree的非严格的平衡版本。与之相应的是平衡二叉树(Balanced Binary Tree)又称之为AVL树(因为是G.M. Adelson-Velsky 和 E.M. Landis在1962年发...
分类:
编程语言 时间:
2015-01-12 15:56:55
阅读次数:
357