LeetCode二叉排序树(BST)的总结

一,定义

二叉排序树(简称BST)的定义为:二叉排序或者是空树,或者是满足如下性质的二叉树:
若他的左子树非空,则左子树上所有记录的值均小于根记录的值
若他的右子树非空,则右子树上所有记录的值均大于根记录的值
左,右子树本身又各是一棵二叉排序树

二,性质
  • 1, 二叉排序树按中序遍历该树所得到的中序序列是一个递增有序序列
  • 2,二叉排序树最大节点是根节点的最右下节点,最小节点是根节点的最左下节点
三,二叉排序树的查找

若二叉排序树非空,将给定关键字与根节点比较,若相等,则查找成功.
若不等,则当根节点关键字值大于给定关键字值时,到根节点的左子树中查找;否则到根节点的右子树中查找.

四,二叉树的插入和构建

若原二叉排序树为空,则直接插入节点;
否则,若关键字k小于根节点的值,则插入到左子树
若关键字k大于根节点,则插入到右子树

例如LeetCode 108. Convert Sorted Array to Binary Search Tree
** 值得注意的是: 在二叉排序树中插入的节点都是作为叶子节点插入的 **

五,二叉排序的删除

BST删除一个节点后,仍要保持BST的特性. 删除一个节点本质上说,就是使用这个节点的中序遍历的直接前驱或者直接后继来代替他
删除一个节点分为四种情况

  • 1)待删除节点p是个叶子节点,那么直接删除他即可
  • 2)待删除节点p只有右子树而无左子树,此时只需p的右子树根节点代替p即可
  • 3)待删除节点p只有左子树而无右子树,此时只需p的左子树根节点代替p即可
  • 4)待删除节点p左右子树都不为空.可以有两种方法处理
    A,用p的左子树的最右边节点代替
    B,用p的右子树的最左边节点代替
    例如LeetCode 450. Delete Node in a BST
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 9,942评论 1 31
  • 基于树实现的数据结构,具有两个核心特征: 逻辑结构:数据元素之间具有层次关系; 数据运算:操作方法具有Log级的平...
    yhthu阅读 9,804评论 1 5
  • 姓名: 李小娜 [嵌牛导读] :这篇文章主要介绍了Java二叉排序树,包括二叉排序树的定义、二叉排序树的性质、二叉...
    n184阅读 3,848评论 0 0
  • 1 概述 二叉搜索树,顾名思义,其主要目的用于搜索,它是二叉树结构中最基本的一种数据结构,是后续理解B树、B+树、...
    CodingTech阅读 8,287评论 5 35
  • 车厢的广播响起的第五遍,我回过神来,或许是耳机里的歌声开的太大,或许是含着的橙味棒棒糖太甜,或许是推荐按摩器的工作...
    忧郁树先生阅读 1,865评论 0 0