首页 > 其他 > 详细

BST和RBtree

时间:2017-02-20 01:26:23      阅读:345      评论:0      收藏:0      [点我收藏+]

讨论怎么用随机化的方法,使得二叉搜索树在大部分情况下都能保持平衡?

1、排序

  将数组构建为二叉搜索树,在进行中序遍历,就可顺序输出;

  BST的时间复杂度为:O(nlogn);最坏情况:O(n^2);

技术分享


BST与快速排序的算法思想极为相似;


2、随机化BST

  (1)、随机、均匀地打乱数组的序列;

  (2)、BST排序;

  随机化BST树,排序的算法时间复杂度:O(nlogn);

  随机化BST树的高度为:O(logn),所以查询数字的时间复杂度为:O(logn);


3、平衡搜索树

  AVL树

  2-3树

  2-3-4树

  B树

  红黑树

  跳跃表

  树堆


4、红黑树

  树的高度为:O(logn),其所有操作均在log(n)时间完成;

  满足特征:

  i、每个结点不是红的就是黑的,色域:一个位进行表示;

  ii、根结点和叶子结点都是黑色;

  iii、每个红色结点的父节点都是黑色;

  iiii、从该结点到达叶节点的所有路径有相等的黑结点;(所有路径的黑高度是一致的)。

对iiii条进行模型说明:

技术分享

  RBtree的插入(红色结点):旋转算法,有些结点颜色可能的改变;

  插入时间复杂度:O(logn);

  插入算法的具体实现在前面博客中已经描述清楚。




本文出自 “wait0804” 博客,请务必保留此出处http://wait0804.blog.51cto.com/11586096/1899313

BST和RBtree

原文:http://wait0804.blog.51cto.com/11586096/1899313

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!