Тёмный

Understanding B-Trees: The Data Structure Behind Modern Databases 

Spanning Tree
Подписаться 183 тыс.
Просмотров 232 тыс.
50% 1

B-trees are a popular data structure for storing large amounts of data, frequently seen in databases and file systems. But how do they really work? What makes them efficient? In this video, we explore the inner workings of the B-tree, aiming to understand the properties that make them useful and the elegant algorithms that make working with them possible.
***
Spanning Tree is an educational video series about computer science and mathematics. See more at spanningtree.me
To be notified when a new video is released, sign up for the Spanning Tree mailing list at spanningtree.substack.com/
You can support the Spanning Tree channel at ko-fi.com/spanningtree.
Spanning Tree is created by Brian Yu. brianyu.me/
Email me at brian@spanningtree.me to suggest a future topic.

Опубликовано:

 

28 апр 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 252   
@muno
@muno Месяц назад
I really like how the little guys turn their heads to look at the thing you're talking about :)
@sid98geek
@sid98geek 29 дней назад
They are very cute and innocent.
@tommsmith7
@tommsmith7 29 дней назад
​@@sid98geek True dat
@Scrolte6174
@Scrolte6174 26 дней назад
He does this in every video, Sherlock.
@Slitherman96
@Slitherman96 26 дней назад
@@Scrolte6174not everyone watches what you watch, Sherlock
@thezipcreator
@thezipcreator 26 дней назад
@@Scrolte6174 what does that have to do with anything? even if they do it in every video you can be appreciative of it?
@mooseyard
@mooseyard 27 дней назад
Beautiful explanation. I love the animations. As someone who's implemented a few persistent B-trees, allow me to point out a few more details: * This is the classic original B-tree. However, most databases use a B+tree, which is different in that the values are stored only in the leaves; keys in upper nodes just point to lower nodes. When a node splits, you don’t move the middle value up, it stays in one leaf or the other. * B-trees I’ve looked at, like SQLite, don’t have a fixed number of keys in a node. In real usage, keys and/or values are variable size, like strings, and the nodes are fixed-size disk pages (often 4kb.) The number of keys or values that fit in a node is highly variable. So instead you keep adding to a node until its size in *bytes* overflows a page, and then split. Some nodes might have a hundred keys, some might have only four. It doesn’t matter; the algorithms still work.
@yad-thaddag
@yad-thaddag 26 дней назад
Thank you! Very interesting!
@tylerpetrov8094
@tylerpetrov8094 25 дней назад
Learning something new everyday! Thanks for the info
@TheJamesM
@TheJamesM 11 дней назад
Yes, I was thinking about the latter point while I watched: "How do you decide on the number of keys per node? I guess you size it to just about fit into available memory, in order to minimize the number of expendive database queries." If the keys were of consistent size, you could just divide the memory you want to allocate by that size, but in most contexts I can see how it would be more practical to divide keys by size rather than by count. Do you get problems if e.g. you have adjacent large keys? Would that result in "wasted" space in a node?
@ZenoDovahkiin
@ZenoDovahkiin 7 дней назад
That makes sense, thanks!
@amongusztav655
@amongusztav655 5 дней назад
I didn't understand B-trees from university classes but now I do. 3 days before exam. Thank you!
@vastabyss6496
@vastabyss6496 2 дня назад
how did it go?
@amongusztav655
@amongusztav655 2 дня назад
@@vastabyss6496 I passed it but I only got a kettes/elégséges so I'm going to attend the repair exam
@MaxPicAxe
@MaxPicAxe Месяц назад
Lol that's actually my first time hearing about a b tree, looks awesome and elegant and simple
@theAcum
@theAcum Месяц назад
Elegant indeed but far more complex than a binary tree. In this case you're trading simplicity for faster search time.
@paulstelian97
@paulstelian97 Месяц назад
@@theAcum Some say that a special case of b-tree is equivalent to the red-black tree, another strategy which is, however, a binary search tree as well.
@TheWizardGamez
@TheWizardGamez Месяц назад
Knock on wood before your up at 2 AM on a Red Bull and adderall fueled binge trying to figure out how to shave off 1 ms of process time.
@ronak212
@ronak212 17 дней назад
Ain't nowhere near simple but magnificent for sure
@MichaelChin1994
@MichaelChin1994 Месяц назад
Fed up with my living room being a mess, I decided to watch this. Oddly think it's going to help
@KaiHenningsen
@KaiHenningsen Месяц назад
Keep the mess in a b-tree?
@Y2Kvids
@Y2Kvids Месяц назад
use c trees
@azizayari252
@azizayari252 Месяц назад
Well you're gonna need to sort it in an ascended or descended order first
@KaiHenningsen
@KaiHenningsen 28 дней назад
@@azizayari252 What for? That happens automatically when putting it in the tree.
@Shake_Well_Before_Use
@Shake_Well_Before_Use 27 дней назад
​​Christmas?a​@@Y2Kvids
@LordHonkInc
@LordHonkInc 9 дней назад
Man, I remember having balancing B-Trees as assignments in my CS exams and failing to get the right answers. This video does a much better job of explaining it than any class I took in university in a fraction of the time we spent learning it. Thanks for finally getting me to understand👍
@asishreddy7729
@asishreddy7729 Месяц назад
Such a simple but beautiful animation! So many channels do such complex animations but they do not realise simple animations can be so beautiful.
@davidbatista1183
@davidbatista1183 Месяц назад
Has a Wall-E kind of feeling 😊
@SantiagoArizti
@SantiagoArizti 8 дней назад
I found it confusing that the nodes left undimmed were the ones we were supposed to pay attention to. Didnt you?
@esra_erimez
@esra_erimez Месяц назад
This is a great video. Normally, databases do not store data in internal nodes, only leaf nodes and function as intermediate pointers. Leaf nodes on the other hand contain the actual data entries or pointers to those data entries. Additionally, most databases have pointers to neighboring leaf nodes. By the way, these pointers to neighboring leaf nodes help lot with solving concurrent operations on the B-Tree.
@sohampatel5166
@sohampatel5166 Месяц назад
yeah those are known as B+ Trees
@mooseyard
@mooseyard 27 дней назад
A different approach to concurrency is copy-on-write, where instead of changing a node in place you make a copy of it with the changes. This means changes don’t affect any concurrent readers since nodes are immutable. However, any nodes that point to the modified node also have to be updated to point to the new one, which means a change spreads up to the root node. (This may sound wasteful, but in practice you can modify new nodes in place because no one else can see them. So a node only has to be copied once during any transaction.) In this type of tree you can’t have links between siblings because you’d end up having to copy all the siblings too. Instead, when you’re going down the tree you keep a breadcrumb trail, your path, and to get to a sibling you look up, move one child, and go back down. This type of tree is used by CouchDB and LMDB, among others.
@rafazieba9982
@rafazieba9982 15 дней назад
I've been a professional developer for 17 years now. A really good one. I always knew that BTrees are used to store database indexes and that they reduce search complexity to logarithm. I knew how binary trees and AVL trees work. I always wondered how BTrees work. I was too lazy to do the reading. Now I know. Thank you.
@paulstelian97
@paulstelian97 Месяц назад
There's an additional bonus -- nodes tend to be able to fill in some special size, like a disk block or a cache line, which allows further efficiency when doing comparisons for a search. That's why for some applications it's objectively better than even the red-black tree.
@TheSilentknight.1
@TheSilentknight.1 Месяц назад
Just saying thank you from behalf of the community for those amazing visualization teaching vids and for the quality you put in them
@peterpesch
@peterpesch 17 дней назад
Wow! Great explanation! Basically the same as how we learned it 45 years ago, but with these animations it takes much less time. Back than, the professor was running around with chalk to change the diagrams on the chalkboard ...
@imveryangryitsnotbutter
@imveryangryitsnotbutter Месяц назад
2:36 When designing a b-tree, how does the programmer determine what the maximum amount of keys in a node should be? For which applications is it appropriate to set the limit to 2, and which applications should have a limit of hundreds? There's a happy medium somewhere, but how is that happy medium calculated?
@IvanToshkov
@IvanToshkov Месяц назад
It depends on your application. For example for a database system I'd go with a node size that can fit in L1 cache of the processor. Or maybe use the filesystem block size? And then delete the size by the size of an element to figure out the number of elements in a block. And then test, modify and repeat.
@Jason9637
@Jason9637 Месяц назад
The best way is to simply try them and see what works best.
@tactic00l
@tactic00l Месяц назад
In practice comparisons tend to be very cheap compared to main memory access, combine that with the fact that the processor loads memory in lines of cache (64 bytes) you want to pick a node size at least 64 bytes large. The sequential prefetcher makes 128 bytes a good option too
@capability-snob
@capability-snob Месяц назад
There are a variety of locality effects that can come into play. tactic00l mentioned cache line size which is a good minimum for in-memory b-trees. You might also size them to fit nicely into a block on disk, so you can make more comparisons for each disk read operation. There are subtler impacts from prefetch logic and alignment that might be worth measuring, depending on your microarchitecture or allocator respectively. some considerations might not be just about latency of accessing memory; depending on your concurrency model, likelihood of paging, data structures you are storing as values etc you might find reason to increase or decrease the number of keys stored in a node.
@FutureAIDev2015
@FutureAIDev2015 Месяц назад
This channel has been a massive help for me in understanding the concepts in my algorithms class well enough to actually pass the assignments.
@isbestlizard
@isbestlizard 28 дней назад
MIT opencourseware also do a great series on algorithms plus the professor is SUPER CUTE he's the dude into origami
@isbestlizard
@isbestlizard Месяц назад
Your homework assignment: write a b tree in python that handles inserts and deletions and unit tests that validate it works correctly
@lorenzosotroppofigo1641
@lorenzosotroppofigo1641 28 дней назад
I had to make a goddamn Red Black tree in C without any external library for a single almost worthless point in university. I didn't know a data structure could have that many bugs. That thing python b tree doesn't scare me.
@prependedprepended6606
@prependedprepended6606 12 дней назад
@@lorenzosotroppofigo1641 For real world applications, you *need* to write it in C, or some compiled language.
@arossfelder
@arossfelder 4 дня назад
​@@lorenzosotroppofigo1641damn, these rotations are evil 😂
@mskiptr
@mskiptr Месяц назад
I more or less knew how B-trees work already, but this was just such a neat refresher that I now want to implement it (maybe together with a couple of formal verification proofs, to show that all these properties are always maintained)
@Eckster
@Eckster Месяц назад
So good, the easiest explanation for such a common data structure I've seen. It's crazy how we teach all these other trees in computer science classes but leave out the most used one. I especially appreciated the performance advantages against binary trees being explained.
@neilcarrier1620
@neilcarrier1620 29 дней назад
I agree; it's a good example of how different measures of efficiency lead to different solutions.
@kamalzubairov2344
@kamalzubairov2344 29 дней назад
Awesome explanation. I always had the feeling that I almost understand how B-trees work, but I wasn't quite there yet. This video showed me the things that I was missing. Thank you!
@docjoesweeney
@docjoesweeney Месяц назад
Ha! Thanks for this. I remember coding b trees waaaay back in the early 80s. Gawd I'm old.
@crosswalker45
@crosswalker45 28 дней назад
Which language do you used to code in 80s?
@poopytowncat
@poopytowncat 27 дней назад
_"early 80s"_ OK boomer! I'm approaching my "early 80's" and I remember coding stuff waaaay waaaay back in the "early 70's" on IBM punch cards.
@docjoesweeney
@docjoesweeney 27 дней назад
@@crosswalker45 vb, ada , assembler (for 6809), vulcan then dbase and clipper, kman, pascal... likely a few others i am too to recall.
@crosswalker45
@crosswalker45 27 дней назад
@@docjoesweeney I always wonder how people in 80s, used to write the code. I'm assuming there won't be any proper documentation or persistent internet connection for that matter.
@docjoesweeney
@docjoesweeney 27 дней назад
@@crosswalker45 dig up old editions of Dr Dobbs magazine. I am sure someone would have scanned them for prosperity.
@IvanToshkov
@IvanToshkov Месяц назад
I love your videos. You somehow always manage to hit the right amount of details. Great job!
@luczuo7950
@luczuo7950 15 дней назад
Thanks ! From Université Paris Dauphine students ! Luc, Silva, Faudel, Barbara, Diao, Adlene and Djena
@HolyC-xs2zj
@HolyC-xs2zj Месяц назад
So well animated, so simply and informatively explained. Thank you!
@69k_gold
@69k_gold Месяц назад
This is the best visual learning channel for CS on RU-vid
@offtheball87
@offtheball87 25 дней назад
I've just started the CS50 AI course as background learning at work, and imagine my surprise to hear this voice again. I really enjoy your teaching style, and I'm so glad to have found more content from you!
@zachlandes5718
@zachlandes5718 День назад
Fantastic! I’d love a video on LSM trees and SSTables next!
@spliterator1981
@spliterator1981 Месяц назад
I'm listening to "designing data intensive applications", and wasn't quite able to visualize a b-tree through audiobook only. This really cleared everything up. Thanks!
@caleblandis3694
@caleblandis3694 26 дней назад
This is literally the best data structure explanation video I’ve ever seen
@pure4vil
@pure4vil 7 дней назад
Thank you for directly going into the subject.
@HPerrin
@HPerrin Месяц назад
This is a great explainer video. Very easy to follow and I love the little robot guys.
@konstantinzolotarev
@konstantinzolotarev 18 дней назад
Surer clear and simple explanation! Thank you very much for your time and effort!
@Browsinghard
@Browsinghard 14 дней назад
Very elegant explanation and animation, you cleared up my misunderstandings from when I just read about b-trees. Your little blob dudes are great communicators!!
@zlbkaa
@zlbkaa Месяц назад
Your videos are awesome. Thanks, Brian!
@ivanthomas8503
@ivanthomas8503 Месяц назад
you published this at the exact right time I have a final exam today and this will be on it and I needed to study up on it.
@TeamDman
@TeamDman Месяц назад
Very great video! Thank you for sharing, I love the style
@leo_bonifacio
@leo_bonifacio 17 дней назад
Thank you a lot for the beautiful explanation of this topic! I always encounter the question about indexing algorithms and used data structures in databases for a data engineer position. So this video helps a lot in understanding b-trees. Thanks again!
@canmertinyo
@canmertinyo 25 дней назад
the expression was really simple and understandable thank you!
@yogeshshahi
@yogeshshahi 6 дней назад
One of the best, really liked it♥️🎉
@jiwan88
@jiwan88 Месяц назад
Amazing video and explanation.
@s1mo
@s1mo 26 дней назад
Mark Zuckerberg teaching me B-Trees, impressive
@jindrichsirucek
@jindrichsirucek 15 дней назад
Awsome expl🙏🙏🙏 For me personaly at first was confusing that you dim not related part, I would intuitively expect get brighter the part where change was happening instead of dimming the rest.. Great work, thx for expaining 🙏
@yagamilight120
@yagamilight120 Месяц назад
You're a legend bro... Hope u live 100 more years
@nithssh
@nithssh Месяц назад
I was looking to implement btrees a while back and all the literature on it were conflicting and varying. I like how you handled all the variances subtely. This is a great video, the definitive one on btrees for sure. Cheers.
@heinz6196
@heinz6196 13 дней назад
There is also the B-Tree with prefix compression, which is particularly relevant if you need to store long strings as keys in the B-Tree. Once a leaf page is overflowing after a key insert, simply split it to create two leaf pages. Promote a copy of the first key from the right new page up one level, but only take as many characters from that key as are necessary to differentiate it from the last key in the left page. Do this only when a leaf page needs to be split. This approach will help save space in the upper pages up to the root. Additionally, keep in mind that if you feed a B-Tree with already sorted keys, you will end up with half-filled pages, wasting space. In this situation, the point where you split the pages will give you a choice on how to balance the B-Tree effectively.
@angkhoi5740
@angkhoi5740 24 дня назад
awesome, never understood this tree until now. Thanks a lot :)
@hufuhufu
@hufuhufu Месяц назад
Animation is amazing!
@hypergraphic
@hypergraphic Месяц назад
Great video! You made it very understadable.
@aliveli8650
@aliveli8650 Месяц назад
Very good explanation!! Congrats!! Keep it going!
@Renan-ev6pt
@Renan-ev6pt День назад
thanks, very easy to understand
@mancampovestiminvatam1281
@mancampovestiminvatam1281 16 дней назад
Great video! Now I understand how it works.
@SenpaiLemon
@SenpaiLemon 10 дней назад
THIS IS JUST BEAUTIFUL !!!! THANK YOU SO MUCH
@shubhamraj5557
@shubhamraj5557 17 дней назад
Great video please continue making these
@allanatal
@allanatal Месяц назад
That video was so well made that even I could understand. Code this algorithm is another story, though.
@saviofernandes5263
@saviofernandes5263 18 дней назад
Stumbled upon this video by accident and I knew I heard that voice before 😂Nice to know that you have your own RU-vid channel now, Brian!
@WaluigiPinballFan
@WaluigiPinballFan 23 дня назад
This was such a nice review, thank you
@user-ez6dn5do9p
@user-ez6dn5do9p 13 дней назад
Please keep uploading more content like this
@professorpoke
@professorpoke Месяц назад
Proud to say that I am following this channel since when it has less than 100K subscribers.
@MichaelDeHaven
@MichaelDeHaven Месяц назад
Dude, I just found it yesterday! It's a great channel and deserves the growth.
@jensdit
@jensdit 27 дней назад
Awesome video! Just one clarification: database systems typically use B+-trees rather than B-trees to allow for ISAM (range search on leave nodes).
@milakohen630
@milakohen630 Месяц назад
those animations are amazing 🤩
@arandomguy9474
@arandomguy9474 Месяц назад
thanks for this bud. love it!
@trocchiettoski
@trocchiettoski 16 дней назад
is the first time i subscribe to a channel after i saw 5 seconds and skipped a couple of minutes after other 3 seconds. All your effort needs to be encouraged
@kipchickensout
@kipchickensout 27 дней назад
Very understandable and nicely taught! thanks
@everythingevergreen3320
@everythingevergreen3320 4 дня назад
Great explanation and graphics; however, I often used hash functions with an indexed sequential pointer search for fast record look ups. One hash, a couple of pointer traversals and I had the record needed. Very simple adds and deletes via pointers to dynamic memory.
@SpockKaDeddy
@SpockKaDeddy Месяц назад
Thank God your back ❤❤❤❤
@oussamaabdelwahed5594
@oussamaabdelwahed5594 20 дней назад
Just a great explanation
@mo938
@mo938 Месяц назад
I would love to see an implementation of this from scratch!
@Vaaaaadim
@Vaaaaadim 19 дней назад
3:35 "Because each node branches in so many different directions we cut down on the search space quickly and we can find what we're looking for by checking far fewer nodes than a binary search tree would require" I think the video could better motivate why checking fewer nodes might be better. We check fewer nodes, but we do more work per node, so at least on the surface one might think it doesn't make a difference. I think it was also a little bit glossed over that B-Trees are self-balancing, whereas regular old binary search trees are not, at least this was the property of B-Trees that was emphasized in a DS/Alg course I took at uni.
@Skeffles
@Skeffles Месяц назад
Brilliant video! I had no idea that it was so closely related to binary trees.
@MWKING
@MWKING Месяц назад
Hello, thank you so much for the content, It's awesome. you're talented when it comes to explaining stuff. Thank you.
@2bfrank657
@2bfrank657 25 дней назад
So the 'B' in 'B tree' DOES NOT stand for 'Binary'. Definately a chance for confusion there!
@Vercingetorix061983
@Vercingetorix061983 5 дней назад
I name it Beatrice 😂
@bobfish7699
@bobfish7699 29 дней назад
Excellent article!
@kalpakHere
@kalpakHere 13 дней назад
Great explanation. Looking forward to LSM trees :)
@firstacc5442
@firstacc5442 Месяц назад
This will stay the best video or years to come
@DrakiniteOfficial
@DrakiniteOfficial 23 дня назад
So elegant!
@Hussein....
@Hussein.... 3 дня назад
Very helpul , thanks a lot you are the best ❤❤❤
@waiphyotun7633
@waiphyotun7633 21 день назад
Why didn't I find this great channel with unique presentation earlier?
@tylerpetrov8094
@tylerpetrov8094 25 дней назад
Thanks for the vid! You earned my sub
@Intense_Cloud
@Intense_Cloud 21 день назад
The "monitos" (cute animations) got me engaged to watching, among the interesting information presented/narrated. Great video!🎉😊
@wissiw5276
@wissiw5276 Месяц назад
i wish i could have a teacher that utilizes simple animations like these in class, the visualisation makes it so clear
@lesarXD
@lesarXD Месяц назад
im not joking when i say, i was literally looking into making my own db 2 days ago, but then the optimization algorithms discouraged me because it looked so complex. however, this video was so easy to grasp that i might just end up committing to the project
@MK-lh3xd
@MK-lh3xd 20 дней назад
Curious. What is your motivation to create your own DB? If you are creating DB for learning or teaching, then it is fine.There are already many open source databases, that are quite good. If you are creating your own DB, you will also need to consider caching, and a lot more features.
@lesarXD
@lesarXD 20 дней назад
@@MK-lh3xd just to learn stuff tbh. In my serious projects i use postgres
@gnaneshwarrao174
@gnaneshwarrao174 Месяц назад
Thank for the video
@zxuiji
@zxuiji Месяц назад
I prefer an offset tree. Say you have a buffer or file full of nodes. Every node has a fixed offset from the head. As long as you know the head's pointer or file id you can get any node by it's offset. This causes the offset to work as a node ID which is useful for fast record access. Sticking to only offsets/indices can create an issue around adding/removing nodes at random places. This is fixed by building 2 pairs of "next" & "previous" members into the nodes. One pair is for tracking removed nodes, the other pair is for tracking assigned nodes. In code the node access would look something like this: next = head + node.assigned.nextOffset or prev = head + node.assigned.prevOffset You can attach the pairs directly to the node or via a separate list - in which case you use the determine the offset of the data by the offset of the node like this: index = (node - nodeList) / sizeof(node) data = dataList + (index * sizeof(data)) An example of where you'd want to do the latta is text. You'd want to perform common string operations on the text such as finding a sequence of characters. There're ready made functions for that sort of thing but they assume continuous data, not nodes. Identifying the node from the data can also be done easily by a similar process: index = (data - dataList) / sizeof(data) node = nodeList + (index * sizeof(node)) This gives the best of all worlds. Fast adding/removing of nodes via linked list format, fast node lookup via indices/offsets, easy to perform common operations via preexisting functions. Sorting can be fast too simply by making a list of ID & integer value pairs to be sorted by integer value. Then simply going through the actual list and 1 by 1 swapping the existing data with the data that should be there. For a file the swapping would look something like this: read( nodeList, offsetA, nodeA, sizeof(node) ) read( nodeList, offsetB, nodeB, sizeof(node) ) read( dataList, offsetC, dataA, sizeof(data) ) read( dataList, offsetD, dataB, sizeof(data) ) write( nodeList, offsetA, nodeB, sizeof(node) ) write( nodeList, offsetB, nodeA, sizeof(node) ) write( dataList, offsetC, dataB, sizeof(data) ) write( dataList, offsetD, dataA, sizeof(data) ) The integer values is a case by case thing that can be calculated upon creating the data so the sortable integer list can just be kept as a 3rd list along side the node list and the data list. I've never had a reason to use binary trees as of yet.
@Ahl.12
@Ahl.12 10 дней назад
thank you so much...
@DrakiniteOfficial
@DrakiniteOfficial 23 дня назад
Very cool!
@mrinalde
@mrinalde 17 дней назад
Thanks!
@kodafox
@kodafox Месяц назад
This was great! I'd love to see one on lock free ring buffers.
@wsollers1
@wsollers1 Месяц назад
Great video
@omaislindodesantos
@omaislindodesantos 24 дня назад
Do more video about data structures, please! Thkx!
@idiomaxiom
@idiomaxiom 23 дня назад
The joy of ternary hardware is comparing three keys in one op.
@zackieboi
@zackieboi Месяц назад
spanning tree upload, good day
@chasebase76
@chasebase76 24 дня назад
You are a good person.
@JB52520
@JB52520 29 дней назад
I can't believe I missed the existence of these things for decades. Wow. I just assumed B-tree was short for binary tree 🤦‍♂ I have to make one now, and plenty of tests to measure and abuse it.
@climbeverest
@climbeverest 15 дней назад
Incredible
@adrianziegler-millard7857
@adrianziegler-millard7857 20 дней назад
Great video. Do LSM trees next!
@jamashe
@jamashe Месяц назад
Great vid. Thanks. And btw which software do you use for animating your vids? They are beautiful.
@algorithminc.8850
@algorithminc.8850 17 дней назад
Great video. I look forward to checking out your channel. Thanks. Subscribed. Cheers ...
@EdeYOlorDSZs
@EdeYOlorDSZs 24 дня назад
Ok but where's the complexity comparison, time and memory complexity gains of b-trees woud have been a nice addition. Nonetheless beautiful animations and you have a great, calm explaining voice
@helleye311
@helleye311 Месяц назад
Somehow simpler than red-black trees. I still have flashbacks to algs and data structures course where we had to make that in java, it was a pain. I could probably maybe do it now with 5 more years of experience. :P
@Prophitalyx
@Prophitalyx 29 дней назад
Another amazing video! If possible, I would suggest making a video about 10-adic numbers, numbers that go off infinitely to the left of the decimal, and possibly its variants which are in other bases and prime, p-adic numbers. :D
@sarthak-salunke
@sarthak-salunke 24 дня назад
Please keep it up❤
@richtigmann1
@richtigmann1 Месяц назад
This is actually a beautiful data structure, it's just so well explained. I suppose you can also perform binary search on the list of numbers WITHIN a node? because it's all sorted already
Далее
AES: How to Design Secure Encryption
15:37
Просмотров 120 тыс.
Why Does Diffusion Work Better than Auto-Regression?
20:18
Diffie-Hellman Key Exchange: How to Share a Secret
9:09
The Most Important Algorithm in Machine Learning
40:08
Просмотров 226 тыс.
How Dijkstra's Algorithm Works
8:31
Просмотров 1,3 млн
Learn Database Normalization - 1NF, 2NF, 3NF, 4NF, 5NF
28:34
So You Think You Know Git - FOSDEM 2024
47:00
Просмотров 954 тыс.
2D water magic
10:21
Просмотров 296 тыс.
The Algorithm Behind Spell Checkers
13:02
Просмотров 385 тыс.
WHY IS THE HEAP SO SLOW?
17:53
Просмотров 189 тыс.