This is one of Gayle Laakmann's best videos. She walks us through the code, array, and tree versions while speaking calmly in a pleasant voice. Thank you!
@hammerain935 жыл бұрын
If you're trying to write this code in Python, beware: You cannot simply assign items[0] = items[self.size - 1]. You must pop() the item at the end of the list to remove it: items[0] = items.pop() ... also be sure to use floor division in the parent calc if using Python 3: (index - 1) // 2
@leonardom.deoliveira44653 ай бұрын
Why not though?
@ggd1232 ай бұрын
@@leonardom.deoliveira4465 The item at the end of the list still exists after you reassign items[0] so essentially you have a duplicate of the last item at the front.
@harshitm64035 жыл бұрын
Storing the heap in the form of an array just blew my mind...so effective
@theinverteddonkey29613 жыл бұрын
it's really a tree in the form of a list of nodes
@typingcat2 жыл бұрын
Damn, if that blows your mind, your mind most be blown multiple times a day.
@davidlee5882 жыл бұрын
@@typingcat haha, i'm also been wondering why people easily got blown away by simply KZbin videos, it must be like an ejaculation moment for them. 😂
@vectoralphaSec2 жыл бұрын
@@typingcat mine is. There is so much to learn every day. My mind is blown on a daily basis. Its great because im never bored.
@hamzahkhan8782 жыл бұрын
what in the hell we were you thinking of if that blew your mind? lol
@sherazdotnet2 жыл бұрын
Just an FYI: At 3:01 timeframe, you are showing formulas and for pareint you have [Index -2) / 2]. This needs to be change dto index -1 * 2. On next screen where you are coding it, you have it right.
@Pazushh2 жыл бұрын
I think it shouldv'e been (Index-1)/2. while "/" rounds to bottom
@calviethang71392 жыл бұрын
You are right!
@SupunNimantha2 жыл бұрын
Actually that equation is not for the immediate parent of any given node but it gives you the min node (top most node ). Instead of saying parent she should have told its the min. There she made a mistake. At the same time actually there is no need to have that equation because simply the 0th element is always the min.
@dennisfolz3522 жыл бұрын
@@SupunNimantha no you are wrong. The formula (index-1)/2 returns the parent for any given node. And it is important, because you need the parent of any given node if you want to heapify up. ^^
@santjagocorkez11 ай бұрын
@@SupunNimantha You could do the maths yourself: take the 9 at #3. Its parent is 4 at #1. Now let's compute: (3 - 2) / 2 = 0 (floor div). Oopsie, 9 at #3 has the root as its parent, while we know from the picture it's not.
@PsyKosh8 жыл бұрын
Possible error around 2:52 The diagram shows the parent as (index-2)/2, when it should be (index-1)/2
@g.o.46788 жыл бұрын
I believe that calculation takes the ceiling (or whole integer value rounded up, depending on the programming language) of the operation. So, for instance, to get the parent of the node at index 7, we'd have: ceiling((7-2)/2) = ceiling(5/2) = ceiling(2.5) = 3, which is the appropriate index we're looking for.
@arvinsim8 жыл бұрын
Gbenga Ojo
@kurguzov_com7 жыл бұрын
Your are right. (index-2)/2 for parent index is a mistake. Look the code at 3:22 - here is the correct version (index-1)/2.
@quangthang10d47 жыл бұрын
Yes I was gonna say the same thing!
@josevillegas27217 жыл бұрын
In python 2, / is integer division and it truncates the result so 5/2 = truncate(2.5) = 2
@Saztog14253 жыл бұрын
3:22 "Aaand there we go, we've created Minecraft!"
@AlanD203 жыл бұрын
EXACTLYYYY 😂😂😂
@NathanSowatskey10 ай бұрын
The calculation shown in the cartoon diagram to get the parent of the node is shown as (index-2)/2. In the code the calculation is (index-1)/2.
@octamodius5 жыл бұрын
Clean implementation. Clean explanation. Wonderful video! Thank you very much for taking the time to make this. I really needed it!
@CamdenBloke6 жыл бұрын
Pro tip: if your array is indexed at 1 (like with Fortran) the pointers are parent: (index-1)/2, left child:2*index, right child:2*index +1
@xMercuryx562 жыл бұрын
that's not pro, that's just math ... lmfao
@m2rafik6 жыл бұрын
Most of coders strugles to use complex abstract data structures like heaps or graphs because they dont learn it from a concrete use case.
@sarvasvarora3 жыл бұрын
+1 for this. Doing an intro to CS course at uni rn and def if it wasn't for the coding assignments involving practical usr cases, I would've never appreciated such data structures... It's certainly very important to actually implement them in some use case in order to grasp them well.
@stas49853 жыл бұрын
why the hell graphs or heaps complex???
@axea45543 жыл бұрын
@@stas4985 because they are more complex than a simple non-resizable array or a linked list
@harshwardhankoushik85155 жыл бұрын
The explanation with the code is amazzing !! loved it....seems that would work for me! Please continue with the good work
@johnkimura55857 жыл бұрын
Her keyboard clicks are the most satisfying sound
@RobsRobotChannel5 жыл бұрын
ASMR, wikipedia it.
@ivanleon61643 жыл бұрын
hate it.
@himanshusingh51183 жыл бұрын
😂😂😂 irritating
@sanjayvasnani9883 жыл бұрын
Nah. It seems as if her keyboard hates being used by her.
@NilakshMalpotra3 жыл бұрын
Agreed! Lovely sound
@roman-berezkin2 ай бұрын
The best explanation of heaps ever, it got me first try.
@MrJakson1122 жыл бұрын
Having that visual next to the code is such a godsent, thank you for saving my bachelors degree
@LeaFox7 жыл бұрын
I read about heaps online and first implemented it using a right and left Node. I felt array, though - spidey senses. I wish I would have seen it on my own. But, this video was a close second. Thank you so much for a clear description.
@mvcds927 жыл бұрын
The video feels incomplete because it never explains what a heap is used for, though the data structure very well.
@jimmithfarrel89867 жыл бұрын
A heap is used as a queue where the min (or max if max heap) is always accessed in O(1) time. If the min (which is always at index 0 is popped off, then the next smallest takes its place. Remember its stored linearly yet indexed logarithmically. Therefore its a "priority" queue.
@mvcds927 жыл бұрын
Yeah, I've googled it afterward, though it's kind of you helping me here, thanks!
@musicprod83666 жыл бұрын
Thank you : )
@xNajda6 жыл бұрын
What's the difference then between a heap data set and just a normal ordered data set using a binary search for the placing of each new element?
@sumitbhattacharya17206 жыл бұрын
go read a book then.
@guadalupevictoriamartinez45373 жыл бұрын
I forgot this channel existed. It saved me once again
@AlexXPandian3 жыл бұрын
Best video explanation with code walkthrough showing how to answer the ubiquitous lazy interviewer question "Implement a Heap data structure".
@ophir19827 жыл бұрын
Possible error at 1:54 the algorithm is said to be swapping with the smallest of the 2 child elements (when bubbling down) So 20 is swapped with 4, then the pointer is swapped with 9 (left child) while the right child is 7 - smaller.
@nopenope84096 жыл бұрын
1 year later but that is not correct because what you see there is already swapped so there was 4 before the swap and 20 took the place of 4 and then took the place of 9. there isn't an error
@xXmayank.kumarXx5 ай бұрын
Heaps can be thought of as a binary tree. Peek takes O(1) while other operations take O(log n). For min heap: 1) Insert new node at last, then heapify (ie swap with parent until parent > child) 2) Delete the root node, replace last element at root then heapify (ie swap down)
@anwarshaikh60238 жыл бұрын
Very nice explanation. Though including big O complexity of the operations would be great.
@BryanTidwell27 жыл бұрын
Anwar Shaikh insertion and removal should be logarithmic. of course poll is constant and search is linear but you wouldn't want to use the structure for search
@damnstupidoldidiot87765 жыл бұрын
It should be O(nlog(n)).
@uusoft4 жыл бұрын
time complexity O(nlog(n)) space complexity O(1)
@drophy4 жыл бұрын
Insertion and removal have a time complexity of O(log(n)), where 'n' is the number of nodes in the heap. This is because for example, during insertion, in the worst case scenario, you'll need to move the inserted element from the bottom all the way up. Therefore, the max number of swaps is the height of the tree, which is log2(n) approximately (note that this is just true if the tree is balanced, but they always are for heaps). For example, her tree had 10 nodes at some point, a height of 3 (or 4, depending on how you define 'height') and log2(10) = 3.32. The max number of swaps you might need when inserting is 3. The same idea applies for removal, since the element you place at the top might need to go all the way down. The space complexity of the structure is O(n), of course, since you need an array of size 'n'. The space complexity of the 2 operations, however, is indeed O(1), since they don't need additional space.
@BeginningProgrammer5 жыл бұрын
This is a really nice explanation of min heaps.... Very nice, very clear, very simple , concise and short enough to pick up in a jiffy. Thanks Gayle.
@dvvdsvsd7 жыл бұрын
I have final exam tomorrow, after this explanation, if this will be my pick, I know I'm safe. Amazing videos!
@utkarsh_1084 жыл бұрын
Best of luck
@ShermanSitter4 жыл бұрын
I don't have an exam, but i found it useful as well! I don't know why, but heaps were so confusing...until now! :)
@ShermanSitter4 жыл бұрын
@Chris Chu Learns ah shucks. thank you!
@kenansari4 жыл бұрын
how it was?
@Itskfx Жыл бұрын
Same, I'm terrible at heaps. These vids help a lot!
@JOJOSHgaming75144 жыл бұрын
Thanks a lot, Madam. I've been burning out myself scrolling numerous websites not getting how a heap actually works and how it's implemented, and now finally implemented successfully in C#.
@michaeldang81895 жыл бұрын
hasParent method should be simplified to: hasParent(int index) {return index > 0}
@randomrandom3165 жыл бұрын
Its quite clever
@brianspinos4 жыл бұрын
Nice!!!
@lolipopscandy628 жыл бұрын
How does this not have more views?? What a simple, and amazing explanation. Subscribed!!!
@palanisamymadakkannu43506 жыл бұрын
only entertainment videos ll get more views.. useful videos wont get..😊
@intrepidsouls6 жыл бұрын
Agree with you. I watched quite a lot of her videos and it seems like she doesn't quite understand what she is talking about either.
@blasttrash6 жыл бұрын
@@intrepidsouls I agree too. Her book is good though.
@thatoneuser86004 жыл бұрын
Because it doesn't answer why heaps are used or when one should use them. It doesn't give a perfect concrete use-case where a heap would always be beneficial if used.
@Nellak201110 күн бұрын
I finally understand, just in time for my first Technical Interview tomorrow.
@technowey3 жыл бұрын
Thanks you for this excellent video. It''s the best, most concise and straightforward, explanation of a heap that I've seen.
@murnoth2 жыл бұрын
I am translating these lessons for use in Unreal Engine Visual Blueprints, and Gayle delivers these lessons very cohesively. Thank You!
@kiaksarshirvanimoghaddam43543 жыл бұрын
I always had problems understanding heaps, but you made it so clear. Thank you so much ...
@dmitrybahtiarov35552 жыл бұрын
There is error at 2:56, parent is (index - 1 ) / 2 Or otherwise for left node we get (parent -1) instead of parent. Everything else is just brilliant, thank you for the Great Explanation! 💓
@Itskfx Жыл бұрын
Noticed that too, but I think they corrected that in their code implementation. lmk if I'm wrong cause I'm here for exam revision and I'm kinda weak at heaps.
@VideosOfEarth5 жыл бұрын
I didn't know until now the God of programming is on youtube! Thank you ma'am! 🙏
@salman85624 жыл бұрын
goddess
@sachinmagdum3 жыл бұрын
Method hasParent will return true for root node as well. Because for rootIndex =0, getParent will return 0, because (0-1)/2 = 0. Hence, use of hasParent at line #55 has no effect. To fix this, hasParent can simply return true for all nodes if their index > 0.
@AyanSengupta176 жыл бұрын
It should be (index-1)/2 for the parent and not (index-2)/2. Please correct it.
@Thunder1173 жыл бұрын
This is the most helpful code video i have ever seen
@maheshnampoothirikv50806 жыл бұрын
We need to have one more line in the "poll()" method, correct me if I am wrong. I used the starting example (after inserting 3 as new value to heap) to test the same. int item = items[0]; items[0] = items[size - 1]; items[size - 1] = 0;//We need to make the last element zero explicitly as the last element will stay otherwise. size--;
@dishantsheth95925 жыл бұрын
The "size" variable maintains the boundary of the heap in the array and so there isn't a necessity to take care of elements with index >= size in the array. Also, "items[size-1] = 0" doesn't achieve the same result as assigning a dynamic node in a tree to null. Here, it simply gets assigned a value of 0. To help with understanding, consider the pop operation in the static implementation of a stack. The popped values remain in memory after pop but not in the stack because of the "TOP" pointer there. Similarly here, size keeps track of the boundary of the heap to help with add and poll operations.
@programmercouple3 жыл бұрын
This is the best explanation of Heap. Thanks 🙌🏻
@acymiranda4 жыл бұрын
I don't know, but is getParent(index) correct? If I get the final heap of the example, like: [10, 15, 20, 17, 25] and I add an element in the end, for example, 32 and it would be below 17, so 17 is 32 parent. 32 index is 5. 17 index is 3. If we use getParent(5), I would have: (5 - 1) / 2 => 4 / 2 = 2 But index 2 is not 17, but 20... Am I missing something here?
@dmitrybahtiarov35552 жыл бұрын
There is error at 2:56, parent is (index - 1 ) / 2 and not (index - 2) / 2
@SavageScientist2 жыл бұрын
Bringing back memories of my Data Structures course Shini book it was actually good
@enkhboldochirbat35784 жыл бұрын
This is best explanation of BST on basic concepts.
@satyam_dey2 жыл бұрын
When I clicked on this video I had no idea I'd be learning from the legend herself. Damn.
@akhiljain16954 жыл бұрын
I was searching for something just like this. Awesome explanation of implementation of heap.
@Amolang9913 жыл бұрын
After you poll(), shouldn't you remove the element at `items[size - 1]`?
@johnnybravo964 Жыл бұрын
Sorted linked list is better than a heap! A sorted linked list would have better time complexity since removing the biggest or smallest element wouldn't require the entire list to be restructured. A bit more memory is required though for pointers.
@nyahhbinghi Жыл бұрын
Not sure if she explains this clearly but keeping the array operations to O(1) is probably accomplished via using swaps, where the indices to be used by the swap are found in O(1) by using parent/left/right references?
@lilypad51822 жыл бұрын
For heapingDown, what if instead of the left child being swapped, the right child was being swapped, and the new node would get bubbled down to a place that exceeds the size? then the heap will no longer be compact and there would be empty spots, no? So we'd need additional implementations to take care of this case
@BobBigWheels2 жыл бұрын
Simple explanation. I still don't understand why anyone would use a heap over a BST. Is it because it is much simpler to add and get the extreme value that is built for? What contexts is that useful?
@David_389k3 ай бұрын
Emotionally, we are thrilled to announce that the confirmation of your Sales Incentive payment has been processed.
@KelleyNielsenSalticidSoft7 жыл бұрын
At 9:03, she moves the updating of index to outside the else block. I'm thinking you could move both lines outside it and get rid of the else branch. Anyone disagree?
@RathodDharmin7 жыл бұрын
It's more readable and less code, but "else" gives you an idea of flow.
@mogomotsiseiphemo16815 жыл бұрын
You would have to re-write the code as follows : if( items[index] >= items[smallerChildIndex] ) //Notice the change in the binary operator from < to >= { swap(index, smallerChildIndex); } index = smallerChildIndex;
@minjipack97275 жыл бұрын
1:54 said swap the value with the smaller child value, but the layer3 smaller value is 7 (7 < 9). Even in implementation part, it follows the same logic, so diagrams needs to be corrected as 20 should be under 9 I guess?
@stackingflow4 жыл бұрын
elements are inserted in left to right order and yeah the 20 is below 9 only
@aswinbeats7 жыл бұрын
int getParentIndex(int index) { return (index - 1)/2; } The above code will return 0 when index is 0. Thus, hasParent function for index 0 will return true. I think that getParentIndex should be as follows int getParentIndex(int index) { return (int) Math.ceil( ((double)index - 2)/2 ); } Thus, hasParent(0) will be false because -1 is less than 0. Did I miss anything?
@craigburkhart16166 жыл бұрын
I was thinking the same thing. Even at value of 1 you get 0/2 which is dividing by zero. I have been doing this on paper so i havent run your code but it does seem to address the issue i was puzzled by. Thanks for posting
@quantic72446 жыл бұрын
Noticed it too, if I'm not mistaken this issue is easily solved by changing the condition in the method hasParent: getParentIndex(index) > 0, instead of >=
@off_pudding4436 жыл бұрын
0/2 is not dividing by 0
@WASDsweden6 жыл бұрын
hasParent can simply be index != 0
@petersinsky91236 жыл бұрын
then it would return FALSE even in the case when the parent has index 0
@ontimegrad70692 жыл бұрын
Thanks for the video! But I am a bit confused about the smallerChirld at around 10 min. Should the left child always be the smaller one?
@SicariusVIII5 жыл бұрын
Really have to appreciate the readability of the code a variables.
@jimgetsjob95512 жыл бұрын
so simple to impliment, just paste these blocks of code and *BAM* it probably does stuff but good luck explaining it on an interview
@RachelWho2 жыл бұрын
Minor mistake, at 8:23 instead of comparing the indexes of the left and right children, you should be comparing their values to get the smaller child!
@adityamedhe2 жыл бұрын
that's not minor
@beingyourself98246 жыл бұрын
Today I actually understand how coders actually codes and how to actually maintain the semantics of variables name fabulous explanation I sub you within 1 minutes of this video
@alicianieto28224 жыл бұрын
The video is awesome and what I needed to know. Thank you!
@eddiet2797 жыл бұрын
Very clear. Even more clear than the book actually.
@farithd20423 жыл бұрын
Note: formula for getting parent index, in the diagram is different from the actual formula used in the code. In Diagram - Wrong, In code - Correct
@DarthTofu25 жыл бұрын
Maybe I'm getting too far into the weeds, but how is this heap arranged? What are the times for number placement? Oh I were searching for the value 9, what rules would I use to run from the origin to that value?
@darwinnacionales135 жыл бұрын
I think the use of heap is to easily access either the minimum or the maximum value whenever you call the poll() method. If you need to be able to quickly search by value, you should be using BST.
@rock533553 жыл бұрын
I've basically watched every one of her videos before starting the chapter in my book on the topic
@devin69773 жыл бұрын
Why would you want the heapify methods to be public? Is there a need for them to be accessible outside of the class?
@AlexandruRepede7 жыл бұрын
this is useful for priority queues
@tamoorhamid5194 жыл бұрын
That's one application.
@jadanabil80444 жыл бұрын
@@tamoorhamid519 what are the other applications?
@tamoorhamid5194 жыл бұрын
@@jadanabil8044 They can be used to efficiently find the largest or smallest value in an array.
@jonasgrnbek71135 жыл бұрын
That butterfly keyboard sound 😕
@whiskas-1 Жыл бұрын
There is an animation on 1:49 which not reflects the actual logic of the heap sink down ( accordingnaly to the idea of swaping with smallest child node when bubbling down )
@abdulrashid10604 жыл бұрын
Secret of Learning Heaps; 1) Heaps = Arrays. (Start with Index 1) 2) Parent of Current Index = Current Index / 2 Where to Put new data? 3) Current Index Left Node = Current Index * 2 4) Current Index Right Node = (Current Index * 2) + 1
@supportteam20077 жыл бұрын
Correct me if I am wrong but I think that adding 1000 (or any number greater than 7) and then adding 5 (or 6 or 7 as well) to the heap example at 3:00 would result in an error if the heapfyUp() code provided further in the video is used. Namely, the top node would be the second number added (5 or 6 or 7) which would be greater than the left hand side child.
@bigbangind7 жыл бұрын
I don't think so
@supportteam20077 жыл бұрын
Me neither. haha I guess I wasn't paying too much attention.
@SuprStevn6 жыл бұрын
the function hasParent will return true for input index 0 (which has no parent). Unless I am missing something this is a bug. My code uses private boolean hasParent(int index) {return index >0;}
@shawnjackson75684 жыл бұрын
Space ooo yes this is a bug. Actually there are several bugs in here. Definitely the worst hacker rank video I’ve seen.
@AshfaqAhmed052 жыл бұрын
such an amazing explanation with clean code. Loved it!!!
@chaptersdiversified29403 жыл бұрын
This is the best explanation I've seen :) ty!
@karanbopche5 жыл бұрын
has parent method is wrong. it will return true for index 0 which is the first node and does not have a parent. it should be like private boolean hasParent(int index) {return index > 0; }
@tritrinh5687 жыл бұрын
Didn't know HackerRank has itself a KZbin channel. Subscribed! :)
@gauravmaithani47074 жыл бұрын
best vid ever... thanks McDowell.
@abhinavtiwari32843 жыл бұрын
One small confusion. On line 9, in getParentIndex.....if childIndex is zero, then it will return (0-1)/2 which is zero. Parent of 0th index should not be 0. Please correct me if I am misinterpreting.
@DanielSincAlexandru4 жыл бұрын
I didn't figure it out how main should look like. Could you give me some tips? Thank you! Keep up the good work!
@jkulkarn1003 жыл бұрын
At 10:31 , Parent should be Parent=(index-1) / 2
@IMC57762 жыл бұрын
Whats the intuition behind choosing the right child over the left child? Why do we choose the right child if it is less than the left child? A heap is not necessarily a binary search tree is it?
@AMANDHOL-f7v3 ай бұрын
Quick question: Why do we have to compare with both 2:03 , left node and right node, because aren't left nodes intuitively supposed to be smaller than the right node?
@heldermelendez612 жыл бұрын
Well done, Gayle. Thank you.
@ShermanSitter4 жыл бұрын
at 1:50 if it gets swapped with the 'smaller' of the two, why does the 20 get swapped with the 9 instead of the 7?
@stackingflow4 жыл бұрын
+1
@gutenmorgan20633 жыл бұрын
i know you wrote this comment a while ago but I believe we do it that way because we have to go to the next available spot. If you write horizontally on all of the nodes starting from the root at 0, where she does in the video would be the next place you would go as if you wanted to add nodes, that would be the first place in terms of heaps. I hope this is helpful and that your figured it out!
@anirudhreddybasani35556 жыл бұрын
In getParentIndex() function if childIndex=0 then (childIndex-1)/2 would evaluate to 0 as integer division will be performed... so hasParent(int index) function would return true even if index=0 as getParentIndex() function would return 0...So I think hasParent() function is not working when index=0....Is it correct????
@imochurad5 жыл бұрын
It seems that your assumption is correct, however, you'll still gonna break from the while loop in heapifyUp() method b/c root is not bigger than itself. As a proper fix, one should check if the index passed into hasParent() method is 0. If it is -- return false.
@anujpancholi82934 жыл бұрын
hasParent or getParentIndex will not, and should not, work for index=0, since the root element itself is positioned at index 0, and by definition, it has no parent. You can include a check for this, but for the sake of simplicity, that check was not included here.
@cicakmuhamed Жыл бұрын
At 1:38, did you mean "... we swap that value at the root with the last leaf node"? Because that is certainly not the same as swapping with the last element added. I find that confusing phrasing. Other than that, it's a great tutorial, thank you.
@pranavnyavanandi97102 жыл бұрын
Why do the heapify() methods need to be public ? Any reason a user might want to access them?
@Nickel804 жыл бұрын
The video should also talk about the run time complexity of the functions implemented
@wotizit3 жыл бұрын
should O(nlogn) worst case
@annEngr3 жыл бұрын
I'm trying to use your example code in Hacker Rank and it fails two test cases. I can't figure out why or how to fix it. :(
@patriciabonaldy96243 жыл бұрын
Maybe I'm wrong but the poll function require to remove the last element before decrement size variable.
@nevillelam79993 жыл бұрын
goes a little bit fast, but cover basically all the required things, i like it!
@computernerd8157 Жыл бұрын
Great video but I think understanding a simpler example of heapsort first would be more useful to compelete noobs. I just got done studying a simpler example and was able to make a heap sort. Clean code is great and will be required to solve coding interviews but I prefer simpler code with formula explained. For example int leftside = i*2 + 1; int rightside = i*2+ 2; I saw thar code in the boiler plate code but if I had zero prior knoweldge I would of been lost.
@yogendrapawar1738 Жыл бұрын
Her way of writing the code... thats impressive
@manojkanduri18235 жыл бұрын
Curious how rightChild, leftChild hasParent english syllabuls used here are actually implemented when we are dealing with arrays :) May be doable but will turn brain teaser. I guess one would prefer to use classes at that point. In any case this video is worthwhile and very relevant. Thank you Gayle.
@DominicVictoria5 жыл бұрын
What overhead will you get from an array of class?
@RobsRobotChannel5 жыл бұрын
At 6:45 it seems like she swaps the value of the parent with the index itself, rather than the value of the array at that index location. Should it not be: swap(getParentIndex(index), items[index]) on Line #56??????
@zaretix5 жыл бұрын
No. the swap method swaps the items at the two indices provided as arguments in swap().
@devinebug4 ай бұрын
What is the time and space complexity ? And what are the effective use cases for min/max heap?
@manuelhe463 жыл бұрын
The link to the coding interview tutorial is broken. It gets me a 404. I'm looking for the source code
@Amolang9913 жыл бұрын
what is the reason you set the helper methods as private and others for public?
@finn55717 жыл бұрын
For deleting a node, is there any issue with just not moving the last node up and bubbling up the smaller child of the empty node until there are no children, and then moving the remaining indices left by 1? Is it less efficient, does it cause any problems, or is it just that we want to heapify down since we already have that method for other purposes anyway?
@motivationalcomred2 жыл бұрын
3:28 getleftchildindex
@adelinghanayem23696 жыл бұрын
For the sake of curiosity, how can we implement a heap with with left and right nodes ?
@evtimstefanov54414 жыл бұрын
public int poll(){ ... ... ... int item = items[0]; items[0] = items[size-1]; size--; heapifyDown(); return item; } Nowhere in that code do you set the last item at size-1 to 0 once you give this value to the items[0]...so you basically wrote a bug which duplicates the last value regardless if you heapifydown from it at the top
@owinophil5777 Жыл бұрын
why are we swapping indices instead of elements in the heapifyUp method?