查看原文
其他

4 张 GIF 图帮助你理解二叉树搜索算法

顶级算法 2022-07-01
顶级算法后台回复 1024 有特别礼包

责编:顶级算法 | 来源:编程技术圈

上一篇精彩:程序员必知必会10大基础算法

大家好,我是顶级算法。

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



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

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

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

  • 没有键值相等的节点。


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


下面 4 张 GIF 动图,是 penjee 官博制作分享,分享给大家。


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


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

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

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

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

  4. 查找右子树。

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


图3 :往 BST 中插入元素


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

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

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

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

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

图4 :BST 转成有序数组



觉得不错?欢迎转发分享给更多人

公众号后台回复 算法 或者 算法心得 有惊喜礼包!顶级算法交流群

 「顶级算法」建立了读者算法交流群,大家可以添加小编微信进行加群。欢迎有想法、乐于分享的朋友们一起交流学习。

扫描添加好友邀你进算法群,加我时注明姓名+公司+职位】


版权申明:内容来源网络,版权归原作者所有。如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

往日分享:

如何有效地做算法题?算法分析的正确姿势
上午写了一段代码,下午就被开除了,奇怪的知识又增加了…
面试时写不出排序算法?看这篇就够了
火遍全国的网络热梗“yyds”,创造者被判刑3年
五大基本算法之分治算法算法的时间复杂度和空间复杂度

关注顶级算法修炼内功

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存