二叉查找树
Posted xmsx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉查找树相关的知识,希望对你有一定的参考价值。
二叉查找树图示:
【二叉查找树】是一棵空树 或 具有下列性质的二叉树。
对于任意节点:
- 若左子树不空,则左子树上所有结点的值均小于它的根结点的值。
- 若右子树不空,则右子树上所有结点的值均大于它的根结点的值。
- 左右子树都是二叉查找树。
- 所有结点的值都不相等。
【插入】
查找被插结点的父亲结点,然后插入。
【删除】
- 若是叶结点就直接删除。
- 若只有左子树或只有右子树,就用被删结点的唯一子结点取代它本身的位置。
- 若左子树右子树均不为空,用被删结点的右子树的最左结点取代被删结点的位置,并取消这个最左结点原有的父子关系。
【查找】
- 从根结点开始,查询的值如果与结点的值相等,就命中。
- 如果比结点值小,就进入左儿子。
- 如果比结点值大,就进入右儿子。
- 如果左儿子或右儿子的指针为空,则报告找不到相应的关键字。
二叉查找树经过插入与删除,其结构的变化会影响性能。下图为最优与最差的结构对比。
想要保持二叉查找树的性能,应尽可能保持结构的平衡。
【优化】
- AVL 树。
- 红黑树。
- 树堆。
以上是关于二叉查找树的主要内容,如果未能解决你的问题,请参考以下文章