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

二叉查找树

时间:2018-10-06 21:30:52      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:相等   ddn   报告   src   命中   img   开始   图片   http   

二叉查找树图示:

技术分享图片

【二叉查找树】是一棵空树 或 具有下列性质的二叉树

对于任意节点:

  • 若左子树不空,则左子树上所有结点的值均小于它的根结点的值。
  • 若右子树不空,则右子树上所有结点的值均大于它的根结点的值。
  • 左右子树都是二叉查找树。
  • 所有结点的值都不相等。

【插入】

查找被插结点的父亲结点,然后插入。

【删除】

  • 若是叶结点就直接删除。
  • 若只有左子树或只有右子树,就用被删结点的唯一子结点取代它本身的位置。
  • 若左子树右子树均不为空,用被删结点的右子树的最左结点取代被删结点的位置,并取消这个最左结点原有的父子关系。

【查找】

  • 从根结点开始,查询的值如果与结点的值相等,就命中。
  • 如果比结点值小,就进入左儿子。
  • 如果比结点值大,就进入右儿子。
  • 如果左儿子或右儿子的指针为空,则报告找不到相应的关键字。

二叉查找树经过插入与删除,其结构的变化会影响性能。下图为最优与最差的结构对比。

技术分享图片

想要保持二叉查找树的性能,应尽可能保持结构的平衡

【优化】

  1. AVL 树。
  2. 红黑树。
  3. 树堆。

二叉查找树

标签:相等   ddn   报告   src   命中   img   开始   图片   http   

原文地址:https://www.cnblogs.com/xmsx/p/9748230.html

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