4 张 GIF 图帮助你理解二叉查找树

本文深入探讨了二叉查找树的定义、性质及其优势,包括查找、插入的时间复杂度为O(logn)的特点。通过四张生动的GIF动图,直观展示了二叉查找树的构造、元素查找、插入操作及转化为有序数组的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(给程序员的那些事加星标


二叉查找树(Binary Search Tree),也称二叉搜索树,是指一棵空树或者具有下列性质的二叉树:

  • 任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;

  • 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;

  • 任意节点的左、右子树也分别为二叉查找树;

  • 没有键值相等的节点。

二叉查找树相比于其他数据结构的优势在于查找、插入的时间复杂度较低。为O(log n)。二叉查找树是基础性数据结构,用于构建更为抽象的数据结构,如集合、multiset、关联数组等。(摘自维基百科)

下面 4 张 GIF 动图,是 penjee 官博制作分享,正好伯小乐最近看到,分享给大家。

图1:查找 BST 中的某个元素

在二叉搜索树b中查找x的过程为:

  1. 若b是空树,则搜索失败,否则:

  2. 若x等于b的根节点的数据域之值,则查找成功;否则:

  3. 若x小于b的根节点的数据域之值,则搜索左子树;否则:

  4. 查找右子树。

640?wx_fmt=gif

图2 ↓ :从有序数组构造一个二叉查找树

640?wx_fmt=gif

图3 ↓:往 BST 中插入元素

向一个二叉搜索树b中插入一个节点s的算法,过程为:

  1. 若b是空树,则将s所指结点作为根节点插入,否则:

  2. 若s->data等于b的根节点的数据域之值,则返回,否则:

  3. 若s->data小于b的根节点的数据域之值,则把s所指节点插入到左子树中,否则:

  4. 把s所指节点插入到右子树中。(新插入节点总是叶子节点)

640?wx_fmt=gif

图4 ↓:BST 转成有序数组

640?wx_fmt=gif


往期热文(点击图片即可阅读)


640?wx_fmt=png

640?wx_fmt=png


关注「程序员的那些事」加星标,不错过圈内事

640?wx_fmt=png

好文章,我在看❤️

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值