首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏算法无遗策

    动画 | 什么是2-3

    2-3正是一种绝对平衡的,任意节点到它所有的叶子节点的深度都是相等的。 2-3的数字代表一个节点有2到3个子树。它也满足二分搜索的基本性质,但它不属于二分搜索2-3查找元素 2-3的查找类似二分搜索的查找,根据元素的大小来决定查找的方向。 动画:2-3插入 2-3删除元素 2-3删除元素相对比较复杂,删除元素也和插入元素一样先进行命中查找,查找成功才进行删除操作。 2-3为满二叉时,删除叶子节点 2-3满二叉的情况下,删除叶子节点是比较简单的。 动画:2-3删除 -----END---

    1.1K10发布于 2020-01-02
  • 来自专栏我是攻城师

    什么是2-3

    2-3 VS 二叉搜索 同样的一组数据,在2-3和二叉搜索里面的对比如下: ? 可以看到2-3的节点分布非常均匀,且叶子节点的高度一致,并且如果这里即使是AVL,那么的高度也比2-3高,而高度的降低则可以提升增删改的效率。 2-3的插入 为了保持平衡性,2-3的插入如果破坏了平衡性,那么本身会产生分裂和合并,然后调整结构以维持平衡性,这一点和AVL为了保持平衡而产生的节点旋转的作用一样,2-3的插入分裂有几种情况如下 2-3的删除 2-3树节点的删除也会破坏平衡性,同样本身也会产生分裂和合并,如下: ? 总结 本篇文章,主要介绍了2-3相关的知识,2-3,2-3-4以及B都不是二叉,但与二叉的大致特点是类似的,它们是一种平衡的多路查找,节点的孩子个数可以允许多于2个,虽然高度降低了,但编码相对复杂

    2.4K20发布于 2019-04-28
  • 来自专栏Android知识点总结

    2-3与红黑

    第一次接触红黑是在关于hashMap,上来就扔五个特性,说满足这五个特点的二分搜索就是红黑。 (1)每个节点或者是黑色,或者是红色。 (2)根节点是黑色。 瞬时懵逼……我扔十个特性,是不是能定义一个红绿灯呢。所以一直不明白红黑为什么要这么定义。 直到今天了解了2-3,才豁然开朗。2-3是一种神奇的,它能够保证该是一个完美2-3可以演化成红黑,这便是保证红黑效率的根本。 先说奇葩的2-3,首先2-3满足二分搜索,但每个节点可能存在1或2个数据,对应的该节点就可能存在2或3个子节点 2-3 ? 2-3引入.png 2-3插入操作: ? 2-3.png 2-3演化为红黑 将三节点拆为两个节点,并将左数据节点设为红色来实现2-3同等功能 ? 红黑.png

    62930发布于 2018-09-29
  • 来自专栏算法无遗策

    动画 | 什么是红黑?(基于2-3

    学习过2-3之后就知道应怎样去理解红黑了,如果直接看「算法导论」里的红黑的性质,是看不出所以然。 此时我们借着2-3去理解基本的红黑,当然我会在后几篇文章介绍2-3-4以及基于2-3-4的红黑。 抛开上面二分搜索满足红黑的性质,我们知道2-3不是二叉,我们把它转换成一颗二叉,2-节点很好转,3-节点转二叉却有两种,如下图: ? (和2-3等价的,任意节点到其叶子节点的高度都是相同的)。 因为2-3不存在永久的4-节点,4-节点终归要分解的(在2-3-4中,为了更好地插入和删除,4-节点可存在于叶子节点和非叶子节点)2-3一样不行,所以在2-3中没有任何一个节点能同时和两条红链接相连

    1.1K20发布于 2020-01-02
  • 来自专栏机器学习入门

    算法原理系列:2-3查找

    结构缘由 首先,搞清楚2-3查找为什么会出来,它要解决什么样的问题?假设我们对它的基本已经有所了解了。先给它来个简单的定义: 2-3查找: 一种保持有序结构的查找。 而2-3就是为了规避上述问题而设计发明出来的模型。现在请思考该如何设计它呢? 这里我们从BST遇到的实际问题出发,提出设计指标,再去思考利用些潜在的性质来构建2-3。 这部分内容,没有什么理论根据,而是我自己尝试去抓些字典的性质来构建,而2-3的诞生过程并非真的如此,所以仅供参考。 构建2-3 字典的两个主要操作为:查找和插入。 我就不卖关子了,直接给出2-3的其中一个基本定义: 一棵2-3查找或为一颗空,或由以下节点组成: 2-节点:含有一个键和两条链接,左链接指向的2-3中的键都小于该节点,右链接指向的2-3中的键都大于该节点 3-节点:含有两个键和三条链接,左链接指向的2-3中的键都小于该节点,中链接指向的2-3中的键都位于该节点的两个键之间,右链接指向的2-3中的键都大于该节点。 !!!

    1.2K20发布于 2019-05-26
  • 来自专栏五分钟学算法

    数据结构与算法——2-3

    因此,引入了 2-3 来提升效率。2-3 本质也是一种平衡搜索,但 2-3 已经不是一棵二叉了,因为 2-3 允许存在 3 这种节点,3- 节点中可以存放两个元素,并且可以有三个子节点。 2-3 定义 2-3 的定义如下: (1)2-3 要么为空要么具有以下性质: (2)对于 2- 节点,和普通的 BST 节点一样,有一个数据域和两个子节点指针,两个子节点要么为空,要么也是一个2 (4)所有叶子点都在的同一层。 2-3查找 2-3 的查找类似二叉搜索的查找过程,根据键值的比较来决定查找的方向。 例如在图 2.1 所示的 2-3 中查找键为H的节点: ? img 2-3为满二叉,删除叶子节点 操作步骤:若2-3是一颗满二叉,将2-3减少,并将当前删除节点的兄弟节点合并到父节点中,同时将父节点的所有兄弟节点合并到父节点的父节点中,如果生成了4 img 结语 2-3 作为一种平衡查找,查询效率比普通的二叉排序要稳定许多。

    88210发布于 2019-09-03
  • 来自专栏yaphetsfang

    算法和数据结构: 八 平衡查找2-3

    本文首先介绍2-3查找(2-3 Search Tree),后面会在此基础上介绍红黑和B。 定义 和二叉不一样,2-3运行每个节点保存1个或者两个的值。 如果中序遍历2-3查找,就可以得到排好序的序列。在一个完全平衡的2-3查找中,根节点到每一个为空节点的距离都相同。 ? 插入完成,变为平衡2-3查找的高度从0变为1。 所以只需要常数次操作即可完成2-3的平衡。 ? 性质 这些本地操作保持了2-3的平衡。对于4-node节点变形为2-3节点,变形前后的高度没有发生变化。 在2-3查找基础上改进的红黑不仅具有较高的效率,并且实现起来较2-3查找简单。 但是2-3查找作为一种比较重要的概念和思路对于后文要讲到的红黑和B非常重要。

    1.2K20发布于 2020-07-30
  • 来自专栏JAVA高级架构

    Java数据结构与算法解析——2-3

    2-3查找概述 2-3是最简单的B-(或-)结构,其每个非叶节点都有两个或三个子女,而且所有叶都在统一层上。2-3不是二叉,其节点可拥有3个孩子。不过,2-3与满二叉相似。 一棵2-3查找或为一颗空,或由以下节点组成: 1)2-节点:含有一个键和两条链接,左链接指向的2-3中的键都小于该节点,右链接指向的2-3中的键都大于该节点。 所以只需要常数次操作即可完成2-3的平衡。 ? 性质这些本地操作保持了2-3的平衡。对于4-node节点变形为2-3节点,变形前后的高度没有发生变化。 距离来说,对于1百万个节点的2-3的高度为12-20之间,对于10亿个节点的2-3的高度为18-30之间。 下面是2-3查找的效率: ? 最后贴上一张2-3的构造过程: ? JAVA架构

    1.5K70发布于 2018-04-19
  • 来自专栏算法无遗策

    动画 | 什么是2-3?(修改删除操作方式)

    2-3正是一种绝对平衡的,任意节点到它所有的叶子节点的深度都是相等的。 2-3的数字代表一个节点有2到3个子树。它也满足二分搜索的基本性质,但它不属于二分搜索2-3定义 一颗2-3或为一颗空,或有以下节点组成: 2-节点,含有一个元素和两个子树(左右子树),左子树所有元素的值均小于它父节点,右子树所有元素的值均大于它父节点; 3-节点,还有两个元素和三个子树 2-3查找元素 2-3的查找类似二分搜索的查找,根据元素的大小来决定查找的方向。 如果达到树根节点还是4-节点,则进行分解根节点,此时高+1(只有分解根节点才会增加高),下面动画2-3插入会出这个例子。 ? 动画:2-3插入 2-3删除 算法4红黑删除最小键这一小结里没有特别详细地介绍,但给到了沿着左链接向下进行变换的三种情况: 1. 如果左子节点不是2-节点,完成; 2.

    1.9K30发布于 2020-01-02
  • 来自专栏深入理解Android

    Java数据结构与算法解析(十)——2-3

    2-3查找概述 2-3是最简单的B-(或-)结构,其每个非叶节点都有两个或三个子女,而且所有叶都在统一层上。2-3不是二叉,其节点可拥有3个孩子。不过,2-3与满二叉相似。 一棵2-3查找或为一颗空,或由以下节点组成: 1)2-节点:含有一个键和两条链接,左链接指向的2-3中的键都小于该节点,右链接指向的2-3中的键都大于该节点。 2)3-节点:含有两个键和三条链接,左链接指向的2-3中的键都小于该节点,中链接指向的2-3中的键都位于该节点的两个键之间,右链接指向的2-3中的键都大于该节点。 所以只需要常数次操作即可完成2-3的平衡。 性质 这些本地操作保持了2-3的平衡。对于4-node节点变形为2-3节点,变形前后的高度没有发生变化。 下面是2-3查找的效率: 最后贴上一张2-3的构造过程:

    57610编辑于 2022-06-22
  • 来自专栏CSDN专栏

    (JAVA)2-3思想与红黑的实现与基本原理

    2. 2-3查找 一颗2-3查找要么为空,要么满足下面两个要求: 2-节点 含有一个键(及其对应的值)和两条链, 左链接指向2-3中的键都小于该节点, 右链接指向的2-3中的键都大于该节点 3-节点 含有两个键(及其对应的值)和三条链, 左链接指向2-3中的键都小于该节点, 中链接指向的2-3中的键都位于该节点的两个键之间, 右链接指向的2-3中的键都大于该节点 2.1 2.4 2-3的性质 ​ 通过对2-3插入操作的分析,我们发现在插入的时候,2-3需要做一些局部的变换来保持2-3的平衡 一颗完全平衡的2-3具有以下性质: 任意空链接到根节点的路径长度都是相等的 红黑 3.1 红黑的概述 平衡中的一种,基于二叉,实现思想来自于2-32-3的实现原理中,可以看到2-3能保证在插入元素后,依然保持平衡状态。 3思想实现的红黑** 红黑主要是对2-3进行编码,红黑背后的基本思想使用标准的二叉查找(完全由2-节点构成)和一些额外的信息(替换3-节点)来表示2-3

    31810编辑于 2025-10-13
  • 来自专栏苦逼的码农

    三分钟基础知识:什么是 2-3

    因此,引入了 2-3 来提升效率。2-3 本质也是一种平衡搜索,但 2-3 已经不是一棵二叉了,因为 2-3 允许存在 3 这种节点,3- 节点中可以存放两个元素,并且可以有三个子节点。 2-3 定义 2-3 的定义如下: (1)2-3 要么为空要么具有以下性质: (2)对于 2- 节点,和普通的 BST 节点一样,有一个数据域和两个子节点指针,两个子节点要么为空,要么也是一个2 (4)所有叶子点都在的同一层。 2-3查找 2-3 的查找类似二叉搜索的查找过程,根据键值的比较来决定查找的方向。 例如在图 2.1 所示的 2-3 中查找键为H的节点: ? img 2-3为满二叉,删除叶子节点 操作步骤:若2-3是一颗满二叉,将2-3减少,并将当前删除节点的兄弟节点合并到父节点中,同时将父节点的所有兄弟节点合并到父节点的父节点中,如果生成了4 img 结语 2-3 作为一种平衡查找,查询效率比普通的二叉排序要稳定许多。

    92020发布于 2019-11-19
  • 来自专栏机器学习技术分享

    记忆的机器学习面试--决策

    什么是决策 1.1 决策的基本思想 其实用一下图片能更好的理解LR模型和决策模型算法的根本区别,我们可以思考一下一个决策问题:是否去相亲,一个女孩的母亲要给这个女海介绍对象。 ? 1.2 “”的成长过程 决策基于“”结构进行决策的,这时我们就要面临两个问题 : “”怎么长。 这颗“”长到什么时候停。 回归: CART回归是假设为二叉,通过不断将特征进行分裂。比如当前结点是基于第j个特征值进行分裂的,设该特征值小于s的样本划分为左子树,大于s的样本划分为右子树。 最终得到一棵回归。 参考文章:经典算法详解–CART分类决策、回归和模型 4. 参考文章:决策及决策生成与剪枝 5.

    72920发布于 2019-07-30
  • 来自专栏学弱猹的精品小屋

    Leetcode | 第8节:记忆化搜索,(上)

    今天我们来讲一讲记忆化搜索和这个数据结构。记忆化搜索是对搜索算法的一个优化,涉及到记忆化搜索的题目都或多或少有一点技巧。至于,它的定义非常简单,也有非常多的应用。 记忆化搜索 记忆化搜索(Memorization)是搜索算法的一个改进。 当然了,这肯定不是记忆化搜索的部分。记忆化搜索顾名思义,是要保存一些状态,避免重复计算。这里可以保存的状态就是从某一个位置出发到之后,可以组成的句子列表。 同样,我们会在代码中标记,哪里使用了记忆化搜索。 这一道题的标准做法是动态规划,但是用记忆化搜索也是可以解决的,我们来看一看应该怎么做。 可以使用记忆化搜索,是因为它本身是可以通过搜索算法进行求解的。

    60930发布于 2021-08-10
  • 来自专栏AI机器学习与深度学习算法

    学习分类 2-3 感知机

    要如何求出权重向量呢?基本做法和回归时相同,将权重向量用作参数,创建更新表达式来更新参数。这就需要一个被称为感知机的模型。

    68010编辑于 2022-11-08
  • 来自专栏刷题笔记

    2-3 链表拼接 (20 分)

    本文链接:https://blog.csdn.net/shiliang97/article/details/101050371 2-3 链表拼接 (20 分) 本题要求实现一个合并两个有序链表的简单函数

    75140发布于 2019-11-08
  • 来自专栏python3

    2-3 选项卡控件

    2-3 选项卡控件 u本节学习目标: n了解选项卡控件的基本属性 n掌握如何设置选项卡控件的属性 n掌握统计页面选项卡控件页面基本信息 n掌握选项卡控件的功能操作控制 2-3-1 简介 在 Windows 一般选项卡在Windows操作系统中的表现样式如图2-3所示。 ? 图2-3 图片框控件的属性及方法 2-3-2 选项卡控件的基本属性 图片框控件是使用频度最高的控件,主要用以显示窗体文本信息。 其基本的属性和方法定义如表2-3所示: 属性 说明 MultiLine 指定是否可以显示多行选项卡。如果可以显示多行选项卡,该值应为 True,否则为 False。 使用这个集合可以添加和删除TabPage对象 表2-3 选项卡控件的属性 2-3-3 选项卡控件实践操作 1.

    2.3K10发布于 2020-01-07
  • 来自专栏python3

    2-3 T-SQL函数

    2-3 T-SQL函数 学习系统函数、行集函数和Ranking函数;重点掌握字符串函数、日期时间函数和数学函数的使用参数以及使用技巧 重点掌握用户定义的标量函数以及自定义函数的执行方法 掌握用户定义的内嵌表值函数以及与用户定义的标量函数的主要区别 我们首先运行一段SQL查询:select tno,name , salary From teacher,查询后的基本结构如图2-3所示。我们看见,分别有三位教师的薪水是一样高的。 图2-3 薪酬排序基本情况 图2-4 row_number函数排序 图2-5 row_number另一使用 我们可以使用Row_number函数来实现查询表中指定范围的记录,一般将其应用到Web应用程序的分页功能上

    2.2K10发布于 2020-01-08
  • 来自专栏U3D技术分享

    《游戏引擎架构》阅读笔记-第2-3

    本系列博客为《游戏引擎架构》一书的阅读笔记,旨在精炼相关内容知识点,记录笔记,以及根据目前(2022年)的行业技术制作相关补充总结。 本书籍无硬性阅读门槛,但推荐拥有一定线性代数,高等数学以及编程基础,最好为制作过完整的小型游戏demo再来阅读。 本系列博客会记录知识点在书中出现的具体位置。并约定(Pa b),其中a为书籍中的页数,b为从上往下数的段落号,如有lastb字样则为从下往上数第b段。 本系列博客会约定用【】来区别本人所书写的与书中观点不一致或者未提及的观点,该部分观点受限于个人以及当前时代的视角

    1K10编辑于 2022-10-28
  • 来自专栏小白历险记

    平衡搜索二叉之红黑(拒绝死记硬背,拥抱理解记忆

    前言 在了解完平衡搜索二叉的优势和应用后,我们学习了AVL这种方案来实现它,但在前人们的不断使用和开辟,另一种更优的方案横空出世——红黑。 ---- 一、红黑概念 红黑,是一种二叉搜索,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 由红黑的概念得知,红黑方案和AVL的方案对比,我们可以得知: AVL是一颗宁折不弯的:它容不下一点偏差,AVL任何时候都是一颗绝对的平衡搜索二叉;但是也由于这个特性,当我们面对频繁的修改时 pParent 域指向红黑的根节点,pLeft域指向红黑中最小的节点,_pRight域指向红黑中最大的节点,如下: 3.3红黑的插入操作 红黑是在二叉搜索的基础上加上其平衡限制条件,因此红黑的插入可分为两步 ; }; ② 检测新节点插入后,红黑的性质是否造到破坏(重点) 先看每种情况下如何处理,最后有总结帮助记忆 因为新节点的默认颜色是红色,因此:如果其双亲节点的颜色是黑色,没有违反红黑任何 性质,则不需要调整

    69420编辑于 2023-04-16
领券