二叉查找树

Posted xmsx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉查找树相关的知识,希望对你有一定的参考价值。

二叉查找树图示:

技术分享图片

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

对于任意节点:

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

【插入】

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

【删除】

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

【查找】

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

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

技术分享图片

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

【优化】

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

以上是关于二叉查找树的主要内容,如果未能解决你的问题,请参考以下文章

查找有序表折半查找判定树二叉排序树3阶B-树

3 分钟理解完全二叉树平衡二叉树二叉查找树

树二叉树查找知识点总结

js数据结构与算法(二叉树二叉查找树)

树二叉树查找算法总结

树二叉树查找算法总结