树有非常多变型,下面是Wiki的截图
以下简单介绍几种常听到的~
前几篇介绍的是最基本的二元树,但实际上不太会直接用到二元树,因为它不会做平衡,如果一直对它做insert,很容易就会歪一边,大大影响效能。之前有提到的两种比较常听到的平衡树,AVL Trees 和 Red Black Trees。
平衡树在做insert的时候,会做旋转操作(左旋,右旋等),根据值去调动节点的位置,让整个树一直保持在平衡的状态。
一般来说Red Black Trees在insert&delete上比AVL树有优势,AVL树则在serach有优势。
两种树的程序都很复杂,因为在插入跟删除的时候,都有很多case要处理,大家有兴趣可以再去研究
不过一般来说,我们有需要都会去github找package来用XD,很少情境要你去刻一个出来
这一种就是MySQL InnoDB底层的资料结构
平衡二元树在搜寻的速度上的确很优秀,但不好去读取大量的资料,如果我们要去找id 1到20的资料,那就要搜寻20次。其次二元树每一个节点底下只可以有两个子节点,DB资料随便都几百万千万,这颗树的深度就很可怕了,这也会影响到搜寻的速度。
而B+ Tree就解决了这些问题
最下面绿色的是真正的资料,以MySQL来说是一页,页跟页之间有做链结,每一页都有下一页的地址。以B+Tree来搜寻id 1到20的资料,我们就可以透过树来找到id 1的页在那,再从页里面照顺序找1~20的资料,就可以一次回传!树就是一个索引的概念,让我们可以快速找到页的位置~
图源在这一篇文章找的,内文写得很细,大家有兴趣可以看看~
中文叫二元堆积,是为了解决Priority Queue的一种方式
那什麽是Priority Queue?
简单来说在队列里面加入权重,举个例假如一堆平民先进去排队,但权贵人土可以随时插队的概念(像打疫苗),又或者是待办清单,原本就照重要的程度去做排序,但突然有一个紧急的事情,就会插到清单最前面。
Min Heap (root为最小值)
1
/ \
2 3
/ \ / \
4 5 6 7
/ \ / \
8 9 10 11
Max Heap (root为最大值)
11
/ \
9 10
/ \ / \
5 6 7 8
/ \ / \
1 2 3 4
再做Heap sort就可以做出Priority Queue的效果,大家有兴趣再去研究~
今天先到这样~Bye
<<: [Day 29] Trivy - 介绍、操作与导入CI/CD
在上一篇文章中为各位介绍ARFoundation/ARCore,今天我们要来制作魔术方块AR游戏。 ...
昨天介绍新增文章,今天要来介绍新增页面。这两者有什麽差别呢?一般来说如果是跟网站有关的资讯、或是一些...
tags: ItIron2021 Javascript 作者碎碎念 当时在用这一系列题目跑模拟面试活...
我们昨天成功拿到资料了,今天就要开始训练模型了 那由於我们当初在介绍 CNN 结构时的 code ...
前言 从上周末开始到周三,除了学习老师教的观察者模式(Observer Pattern)和几种排序方...