二叉树

Posted tqlin

tags:

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

二叉树

介绍

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

定义

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

如:

技术图片

搜索元素过程

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

与数组对比

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

技术图片 技术图片

平衡二叉树

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

技术图片技术图片

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

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

二叉树及特殊二叉树(满二叉树完全二叉树二叉排序树平衡二叉树)的定义和性质(附详细推理过程)

二叉树二叉树的镜像

普通二叉树二叉查找树平衡二叉树常见操作汇总

SDUT 3341 数据结构实验之二叉树二:遍历二叉树

树二叉树满二叉树完全二叉树

SDUT 3341 数据结构实验之二叉树二:遍历二叉树