学会这些Vue小技巧
|
不是挺简单的,至少比AVL树那种左旋右旋简单得多。 同样地,在2-3-4树自平衡的过程中出现了临时的5节点,所以,如果允许5节点的存在呢? 嗯,2-3-4-5树由此诞生! 同样地,还有2-3-4-5-6树、2-3-4-5-6-7树……子子孙孙,无穷尽也~ 所以,有人就把这一类树归纳为一个新的名字:B树。 B树 B树,表示的是一类树,它允许一个节点可以有多于两个子节点,同时,也是自平衡的,叶子节点的高度都是相同的。 所以,为了更好地区分一颗B树到底属于哪一类树,我们给它一个新的属性:度(Degree)。 具有度为3的B树,表示一个节点最多有三个子节点,也就是2-3树的定义。
具有度为4的B树,表示一个节点最多有四个子节点,也就是2-3-4树的定义。 画图辛苦了,关注一波:彤哥读源码。 可以看到,上面自平衡的过程中,出现了一种节点,它具有四个子节点和三个数据元素,这个节点可以称作4节点,如果把4节点当作是可以允许存在的,那么,就出现了另一种树:2-3-4树。 2-3-4树 2-3-4树,它的每个非叶子节点,要么是2节点,要么是3节点,要么是4节点,且可以自平衡,所以称作2-3-4树。 2节点、3节点、4节点的定义在上面已经提及,我们再重申一下: 2节点:包含两个子节点和一个数据元素; 3节点:包含三个子节点和两个数据元素;
4节点:包含四个子节点和三个数据元素; 节点表示旋转的轴。 经过两次旋转,让这颗树再次变成了AVL树,而且这只是其中一种插入场景,真实的情况还要根据插入的位置的不同做不同的旋转,你可以多插入几个节点自己尝试平衡一下。 同样地,AVL树的代码也不是那么好实现的,反正,到目前为止,彤哥是没搞懂AVL树的各种规则。 基于这些缺点,所以,后来又发展出来了各种各样的神奇的平衡树。 2-3树 2-3树,是指每个具有子节点的节点(内部节点,internal node)要么有两个子节点和一个数据元素,要么有三个子节点和两个数据元素的自平衡的树,它的所有叶子节点都具有相同的高度。 简单点讲,2-3树的非叶子节点都具有两个分叉或者三个分叉,所以,称作2叉-3叉树更容易理解。
另外一种说法,具有两个子节点和一个数据元素的节点又称作2节点,具有三个子节点和两个数据元素的节点又称作3节点,所以,整颗树叫做2-3树。 (编辑:广元站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



