【Day15】[资料结构]-二元搜寻树Binary Search Tree, BST

二元搜寻树(Binary Search Tree),也称有序/排序二元树,是一种特殊二元树结构,而节点资料的排序具备一些特性。


特性如下

  • 左子树任一节点的值一定小於根节点的值
  • 右子树任一节点的值一定大於根节点的值
  • 任一节点的左、右子树也分别为二元搜寻树。
  • 每一个节点不能出现重复的资料。

如下面这棵树,就是一棵合法的BST
https://ithelp.ithome.com.tw/upload/images/20210926/201210278DRvVFrlPp.jpg

下面这棵树就不是一棵合法的BST,虽然节点11大於8是合法,大於6也是合法的。但是不能大於10这个节点。毕竟11这个节点还是属於10节点的左子树。因此不是一棵合法的二元搜寻树。
https://ithelp.ithome.com.tw/upload/images/20210926/20121027EVkypo1bMq.jpg


新增节点

若目标值小於节点的值,则前往左子树;若目标值大於节点的值,则前往右子树;
https://ithelp.ithome.com.tw/upload/images/20210926/201210270lxK9JhbHC.jpg


搜寻节点

若目标值小於节点的值,则继续在左子树中搜寻;若目标值大於节点的值,则继续在右子树中搜寻;
https://ithelp.ithome.com.tw/upload/images/20210926/20121027wJbss1oGne.jpg


删除节点

需要考虑节点的三种情况

  • 叶子节点(无子树),直接删除。
    https://ithelp.ithome.com.tw/upload/images/20210926/20121027r4HlHL1H5o.jpg
  • 节点有单边子树,用子树代替该节点。
    https://ithelp.ithome.com.tw/upload/images/20210926/201210278r141V68fb.jpg
  • 节点有左右两边子树,左子树取最大值,右子树取最小值。
    https://ithelp.ithome.com.tw/upload/images/20210926/20121027jXNlOV19Yz.jpg

<<:  DAY 14- 《公钥密码》-RSA(2)

>>:  【Day11】Function & Task

Day11:今天我们来聊一下Parrot Security上的Enum4linux

当我们环境有Windows及Samba主机时,可以使用Parrot Security上的Enum4l...

笔记-Color in Image and Video

Basics of Color Light and Spectra(光和光谱) 可见光(visibl...

Day 14:怎麽在 Angular 使用 Bootstrap?

由於在未来的专案有机会使用到 Bootstrap,所以就藉这个机会来介绍一下如何在 Angular ...

Day 21网路通讯协定

前言 网路通讯协定就是为电脑进行资料交换而建立的规章或标准的集合。常用的有TCP/IP协定、HTTP...

D26 - 用 Swift 和公开资讯,打造投资理财的 Apps { 三大法人成交比重实作.1 }

为了完成三大法人的比重,我们需要两个数值 三大法人成交金额 台股日成交金额 - 这一项在前面已经完成...