码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树

时间:2019-03-15 16:00:15      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:排序   binary   连续   bst   线性   tps   对比   二分   分布   

二叉树

介绍

binary search tree,中文翻译为二叉搜索树、二叉查找树或者二叉排序树。简称为BST

定义

  • 所有非叶子结点至多拥有两个儿子(Left和Right)
  • 所有结点存储一个关键字
  • 非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树

如:

技术图片

搜索元素过程

B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中,否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子的指针为空,则报告找不到相应的关键字;

与数组对比

如果B树的所有非叶子结点的左右子树的结点数目均保持差不多(平衡),那么B树的搜索性能逼近二分查找;但它比连续内存空间的二分查找的优点是,改变B树结构(插入与删除结点)不需要移动大段的内存数据,甚至通常是常数开销;如下分别是二叉树和数组插入元素的过程:

技术图片 技术图片

平衡二叉树

但B树在经过多次插入与删除后,有可能导致不同的结构:

技术图片技术图片

右边也是一个B树,但它的搜索性能已经是线性的了;同样的关键字集合有可能导致不同的树结构索引;所以,使用B树还要考虑尽可能让B树保持左图的结构,和避免右图的结构,也就是所谓的“平衡”问题;实际使用的B树都是在原B树的基础上加上平衡算法,即“平衡二叉树”;如何保持B树结点分布均匀的平衡算法是平衡二叉树的关键;平衡算法是一种在B树中插入和删除结点的策略;

二叉树

标签:排序   binary   连续   bst   线性   tps   对比   二分   分布   

原文地址:https://www.cnblogs.com/tqlin/p/10537546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!