Тёмный

Lowest common ancestor of two nodes in Binary Tree Algorithm 

Vivekanand Khyade - Algorithm Every Day
Подписаться 115 тыс.
Просмотров 58 тыс.
50% 1

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

 

20 окт 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 136   
@Kaushikvel
@Kaushikvel 7 лет назад
Some of the best things about your video, 1. your slow explanation. 2. code walk through 3. Complete explanation with lots of examples. Thank you.
@parthobala7251
@parthobala7251 6 лет назад
agree
@tanmayagarwal8513
@tanmayagarwal8513 3 года назад
OKK .. lets just appreciate his innocent smile!
@vardaanbajaj3181
@vardaanbajaj3181 6 лет назад
This topic has confused me since 2 days. This is the best explanation I've found. Thank you sir :) Cleared all my doubts :)
@sjwang3892
@sjwang3892 3 года назад
Absolutely love the clear explanation and walkthrough. Thank you!
@ivantishchenko4686
@ivantishchenko4686 4 года назад
The author is a genius. Thank you very much!
@uncletom321
@uncletom321 6 лет назад
I rarely subscribe to channels, but I did for yours because of how great your teaching method is. It has really helped me better understand data structures and algorithms. Thanks!
@sagarmalshankhala6826
@sagarmalshankhala6826 3 года назад
Sir ji, apka teaching ka FAN ho gya hu me to .. love you. Some of the best things about your video, 1. your slow explanation. 2. code walk through 3. Complete explanation with lots of examples.
@Dizzydizzydizzy7
@Dizzydizzydizzy7 2 года назад
usually i have a hard and long time understanding these kinds of videos, but your videos are so clear I feel like even a toddler can understand
@___vandanagupta___
@___vandanagupta___ Год назад
i was not able to understand this question's solution from any other video but your simple explanation worked and i will never forget this solution again, thanks so much sir!
@aishwaryadwani9365
@aishwaryadwani9365 5 лет назад
Sir one thing i must say here , your videos and explanations are out of the box. Very easily anyone can get it. Thanks allot.
@sushmanthnatha4019
@sushmanthnatha4019 4 года назад
Sir, I have watched many other people videos but your's are simply crystal clear
@bajracha
@bajracha 5 лет назад
Thank you so much for such a clear explanation. Your explanation not only taught me how to understand walking through the algorithm but it actually taught me how to think about a solution and how to approach the solution. Thanks again.
@ishanpand3y
@ishanpand3y 4 года назад
Sir, I think this is preorder traversal. Because in inorder traversal first we go left then node then right, while in preorder traversal first we go node then left and then right.
@marioburgos8656
@marioburgos8656 4 года назад
I agree
@cripz4203
@cripz4203 4 года назад
isnt it postorder as we are processing what to return after left and right.
@utkarshsingh4456
@utkarshsingh4456 4 года назад
@@cripz4203 postorder hai bhai, you are right.
@bismeetsingh352
@bismeetsingh352 4 года назад
It is inorder since we go leftmost,root and then right
@rohitjadhav512
@rohitjadhav512 3 года назад
No...its postorder.
@YSSP4
@YSSP4 6 лет назад
Awesome video. Your explanations are simple and clear to understand. Please keep up the good work. For others, just like me if you are bothered about corner case where one of the element is not present in the tree, then try postorder traversal instead of inorder traversal so that you look in to both left and right nodes before coming to root node.
@adaz2724
@adaz2724 4 года назад
I love this guy, very clear explanation !!!
@RavinderSingh-nh6th
@RavinderSingh-nh6th 5 лет назад
i dont know how to praise you. i have less words to appreciate you..
@shwetadk1986
@shwetadk1986 5 лет назад
You are simply amazing !. Keep the good work and spread the knowledge
@user-uh4be8ci7i
@user-uh4be8ci7i 2 года назад
You are the best teacher sir thank you so much for all this solutions
@sharmapeeyoosh
@sharmapeeyoosh 2 года назад
Hello, Thanks for explaining so well, In your logic for finding out LCA works fine if both the nodes are present and both the nodes are part of different sub tree. Two situation does not handle in this code. 1) if either of the node is not present in tree itself 2) if second node is part of subtree of first node. for exm, P and L nodes. If user enters these two nodes then this algorithm will not work. Solution algorithm: 1) Both the nodes must present in tree otherwise print error and return. 2) if left and right returns non NULL, this is LCA. Print LCA and return NULL. 3) if second node is in subtree of first node then only first node we will return till root node. in such case main function shall have a piece of code, if final return is non NULL then this is the LCA, print LCA. I can post the code if someone needs. thanks
@deliveringIdeas
@deliveringIdeas 2 года назад
Sure please post
@sandeepnallala48
@sandeepnallala48 3 года назад
thanks for making things clear and simpler sir
@shashwatagrawal8412
@shashwatagrawal8412 5 лет назад
Amazing explanation. Please make more videos on Algorithms.
@daspradeep
@daspradeep 6 лет назад
good explanations, got tripped by the edge case a bit because this assumes both nodes to be present in the tree, which is fine i guess. In case one of the nodes is not there then it fails.
@swj_69420
@swj_69420 4 года назад
Can you please tell how is this inorder? Shouldn't it be preorder
@bogdandumitrescu8987
@bogdandumitrescu8987 3 года назад
No need for "else". Great code walkthrough and explanation !
@vivekanandkhyade
@vivekanandkhyade 3 года назад
Much appreciated!
@RamKumar-kz8gg
@RamKumar-kz8gg 3 года назад
can you explain it please
@krishnavasani26
@krishnavasani26 3 года назад
Awesome video. Great explanation, keep up the good work sir!!
@4yt158
@4yt158 4 года назад
Your explanation is awesome bro! Thank you! :)
@shadesofspice5315
@shadesofspice5315 4 года назад
Clear explanation. Easy to understand
@gouravsharma2755
@gouravsharma2755 6 лет назад
Very good explanation.I liked the reasoning in your videos.
@hritikagarwal7676
@hritikagarwal7676 4 года назад
It would be far better if you also explain the intuition to this solution. Knowing the algorithm makes half of the work but knowing what led to this algorithm will make the solution video totally worthy.
@danielshalam2258
@danielshalam2258 6 лет назад
finally i understand how it works ! thank you very much !
@sampathmethuku7428
@sampathmethuku7428 5 лет назад
very good explanation , but I think if the any one node either p or q does not exists then your code will fail, we expect to return null as one node is not present in tree. but your code returns the existing value.
@harshshukla3358
@harshshukla3358 3 года назад
sir this is a very good explanation, just one point that you should have told that we are taking the assumption that both the nodes exist in the tree
@GauravKawatrakir
@GauravKawatrakir 3 года назад
This solution not work when one of the two nodes is found and not the second one. So its return the founded node.
@nishantprajapati7166
@nishantprajapati7166 5 лет назад
Awesome explanation, great sir.
@abhishekkumargupta3043
@abhishekkumargupta3043 4 года назад
This man is awesome. Thank you.
@andreeachirita9801
@andreeachirita9801 2 года назад
really good method of explaining!!
@dipakkumarsinha5811
@dipakkumarsinha5811 4 года назад
Bahut badhiya sir .... Maja a Gaya sir
@kartikaygoel3042
@kartikaygoel3042 4 года назад
Great Video... PS-: can watch it at 4x comfortably
@anty_07
@anty_07 5 лет назад
A somewhat concise solution which uses the property of BST - LCA's value WILL fall between the the two given nodes. SO you keep going left from root till both the nodes values are less than current node , and keep going right till both value are greater than current value. Below is the code. while(root.data < v1 && root.data < v2){ root = root.right; } while(root.data > v2 && root.data > v1){ root=root.left; } return root;
@vm1662
@vm1662 5 лет назад
Yes this works perfectly for Binary Search Tree but I guess the code explained in the video is for Binary Tree :)
@rishabhjain4546
@rishabhjain4546 3 года назад
Great Video. Thank you sir. What happens in the case when there is only one value present in the tree, and the other value is not. In that case, the algorithm is not working.
@aparna123pathak
@aparna123pathak 6 лет назад
No doubt in awesomeness of explanation!!
@Sudarshansridhar
@Sudarshansridhar 5 лет назад
what if the one of node given to find lca is not present in the tree? i think this solution holds good for both values are present. (if i am not wrong)
@alokdeshpande5517
@alokdeshpande5517 4 года назад
Excellent explanation 👍
@HoanNguyen-fc8vb
@HoanNguyen-fc8vb 3 года назад
Thank you for your tutorial. You are one of the best so far. For the if(left !=null && right = null) return root. Is that right or (right !=null) .Please explain. Thank you very much.
@angadrajsingh4311
@angadrajsingh4311 4 года назад
Sir amazing explanation
@司雨-w6b
@司雨-w6b 2 года назад
so clear explanation!
@PIYUSH-lz1zq
@PIYUSH-lz1zq 2 года назад
DAMM !!! ABSOLUTLY SPOT ON
@radhakantaghosh7295
@radhakantaghosh7295 6 лет назад
Hi, Does this method will work for "d" and "h" ? ..........what i am thinking is once execution hit "d" then, it will return that node and will never visit "h".
@raniajay0410
@raniajay0410 6 лет назад
whats the use of visiting h if we have already found d which is LCA.
@1388tushr
@1388tushr 5 лет назад
@@raniajay0410 then how will you know whether "h" exists or not?
@abcd1235911
@abcd1235911 5 лет назад
@@1388tushr Exactly. If one of the nodes is not present this algorithm will return the other node which is present
@RohanSingh-bl5ho
@RohanSingh-bl5ho 5 лет назад
@@abcd1235911 this what i was thinking while i was watching this video, this algo is not completely correct
@abhishekkarn8918
@abhishekkarn8918 6 лет назад
this is preorder traversal na sir?
@beaglesnlove580
@beaglesnlove580 2 года назад
Ur a amazing teacher
@vivekanandkhyade
@vivekanandkhyade 2 года назад
👍👍
@vishalplayzz2580
@vishalplayzz2580 2 года назад
@@vivekanandkhyade sir pls continue this lectures
@thecreative9102
@thecreative9102 4 года назад
Thank you so much for great explanation
@GROW_WITH_GBT
@GROW_WITH_GBT 3 года назад
Thanku ji
@rohinirt6362
@rohinirt6362 5 лет назад
Thank you so much for all your video sir...
@VenkatGonu
@VenkatGonu 4 года назад
code doesn't work if one of the node is not present, ideally it should return null but it returns the other node which is found
@sayalishelke9597
@sayalishelke9597 4 года назад
Best explanantion :) .Subscribed
@unboxingzindagi9972
@unboxingzindagi9972 4 года назад
Love you bro. You are so real!!
@ayushmishra3388
@ayushmishra3388 3 года назад
I think so this algorithm will fail when there are multiple occurrences of n1 and n2, @8:06 pause the video see the tree, and replace the following nodes: *h with m, i with r, e with r.* after first finding m and r, node "D" becomes LCA and returns itself to "B", then "B" checks on its right, it finds "R", now on left of "B" we have "D" as LCA and on right of "B" we have "R" as LCA, so it will return "B" as LCA which is wrong, LCA Should have been "D" only.
@AshokBathini
@AshokBathini 7 лет назад
If one of the nodes p or q does not exist in the Binary Tree, this function will still return the node which is found, but it should have returned NULL. Am I right?
@vivekanandkhyade
@vivekanandkhyade 7 лет назад
yes Ashok , u r right.....Due to the restriction of space on board , I have just focused on the main condition.....in the code we can modify for this corner condition.....Thanks for helping me get better...!
@AshokBathini
@AshokBathini 7 лет назад
It's just a corner case, but otherwise you've explained it very well..good job!
@oneworldofstem7724
@oneworldofstem7724 4 года назад
I wonder when you first encounter this question, how do you figure out the possible steps for getting the answer? I am having trouble of algorithm questions recently. Very hard for me to think of the answer
@gauravburjwal.98
@gauravburjwal.98 4 года назад
same lol
@natesh1
@natesh1 6 лет назад
Awesome vids, can u please consider categorizing ur vids into playlists, for new watchers it helps a lot, otherwise they would have to keep scrolling all ur vids.
@1388tushr
@1388tushr 5 лет назад
How about LCA of "f" and "j"? I think once the code hits "f", it will return "f", it won't go to its child.
@lavishgarg4274
@lavishgarg4274 4 года назад
yes and that too should be the answer
@nikhilkumarmishra1225
@nikhilkumarmishra1225 5 лет назад
You are godsent, thanks a lot!
@ricardosmith03
@ricardosmith03 5 лет назад
What if one of the element is in the left branch of other ?
@neetisharma3768
@neetisharma3768 5 лет назад
Liked and subscribed :) Thank u for explaination
@ayushthakur733
@ayushthakur733 4 года назад
What if the root node is one of the two node ??
@7Critics
@7Critics 5 лет назад
Great explanation!
@borisa6952
@borisa6952 7 лет назад
Thank you for the explanations. I would like to know how to compute and write the algorithm of the "distance between the node e and node i" in this binary tree.
@borisa6952
@borisa6952 7 лет назад
I mean how to write the algorithm between two nodes (not root node) in a binary. The example with nodes e and i would be useful for me. Thank you in advance.
@anupkmr03
@anupkmr03 5 лет назад
Nice explanation Thank you.
@rajnikushwaha1459
@rajnikushwaha1459 7 лет назад
sir your video is really awesome
@pi_by_2224
@pi_by_2224 2 года назад
try this approach struct TreeNode* lowestCommonAncestor(struct TreeNode* root, struct TreeNode* p, struct TreeNode* q) { if (p->valval && q->valval) return lowestCommonAncestor(root->left,p,q); if (p->val>root->val && q->val>root->val) return lowestCommonAncestor(root->right,p,q); return root; }
@vivekmit
@vivekmit 5 лет назад
Good explanation
@kabboghosh1853
@kabboghosh1853 5 лет назад
best teacher
@sunnyjain630
@sunnyjain630 6 лет назад
i think u have used preorder traversal!!
@payalsagar1808
@payalsagar1808 4 года назад
the best!☺
@arpitverma8060
@arpitverma8060 4 года назад
VERY WELL EXPLAINED||
@TS-ku2lg
@TS-ku2lg 4 года назад
Thank you so much sir!
@lokeshnegi5051
@lokeshnegi5051 4 года назад
well explained..
@sakshamagarwal6852
@sakshamagarwal6852 5 лет назад
good explanation sir, thanks :)
@jamesqiu6715
@jamesqiu6715 7 лет назад
you used postorder traversal ... I think
@samaryadav7208
@samaryadav7208 7 лет назад
yeah because he is returning after checking the values of both the children
@gyanasahu1006
@gyanasahu1006 6 лет назад
It is Inorder traversal, as we first check with the current node and return if it is equal to either one. If not equal we expand search to left subtree and right subtree
@badsum
@badsum 6 лет назад
Actual result comparison happens after both, left and right, return. It is post order. Also, if checking current node first for the result comparison, it should be pre-order, not in-order.
@charismatic1516
@charismatic1516 4 года назад
@@badsum Actually, there is both pre and post happening. However, in terms of logic, we check for LCA condition for the current node before checking it left and right subtrees, hence pre. We also do some checking/processing after the children processing. Similar example is when we want to do a sum of all root to leaf paths. In the recursive function, we first add node val to sum so far, then check if we reached a leaf (pre) then return sum, else get sums from left and right child, then add and return those sums (some post).
@charismatic1516
@charismatic1516 4 года назад
@@gyanasahu1006 You meant pre, not in
@TechnicalBaniya
@TechnicalBaniya 7 лет назад
sir for node k the ancestors are f,c,a and the ancestors of node f are c,a then the common ancestor should be c of nodes k and f but you said the common ancestor is f ?
@vivekanandkhyade
@vivekanandkhyade 7 лет назад
the lowest common ancestor for parent and its child is the parent itself. I am sorry i have not explained this in the video. I will reply tomorrow again with a more convincing proof. Thanks.
@tassda2787
@tassda2787 4 года назад
merci monsieur
@sumitkumar-wp4xd
@sumitkumar-wp4xd 7 лет назад
great job sir
@mdsaif4696
@mdsaif4696 7 лет назад
In my interview, the question asked me to return int value.. not node value.. this method just messed.up. pls explain what to do if the function demands returning int value
@ShivangiSingh-wc3gk
@ShivangiSingh-wc3gk 6 лет назад
You should have just returned node.value and kept something like -1 for a case where you dont find the node
@ShubhamKumar-oh3jt
@ShubhamKumar-oh3jt 5 лет назад
when you are returning the value use .data or .key with the calling function
@jagrit07
@jagrit07 4 года назад
Thank you
@adityachauhan1182
@adityachauhan1182 3 года назад
this solution will not work in case if B==root->node ans c is not present
@chetannikam8129
@chetannikam8129 3 года назад
nice video.............................
@ayushthakur733
@ayushthakur733 4 года назад
Explain it for (j,c).... 🤨
@hellochii1675
@hellochii1675 5 лет назад
10:08, I think you want to write "a", but not "LCA" ?
@harirahul7703
@harirahul7703 3 года назад
great explanation but i think this is pre order traversal
@suryajena1575
@suryajena1575 2 года назад
This won't work when one of the two nodes is not found.
@SaurabhSingh-ch6nc
@SaurabhSingh-ch6nc 5 лет назад
Love it ..!
@pradeepsingh-cg8iv
@pradeepsingh-cg8iv 4 года назад
Thanks bro
@SaurabhSingh-ch6nc
@SaurabhSingh-ch6nc 4 года назад
this is how the DSA faculty looks like!
@ruchirai5775
@ruchirai5775 4 года назад
nice !!
@jingli2168
@jingli2168 3 года назад
Should be pre-order instead of in-order.
@prajakta_patil
@prajakta_patil 5 лет назад
Thank u
@zeref6437
@zeref6437 5 лет назад
if LCA is not present it will return wrong answer.
@adityaojha2701
@adityaojha2701 3 года назад
It's good
@bigjforever
@bigjforever 7 лет назад
good. but a little bit slow. I need to see ur vdos at 2x speed
@dsk9258
@dsk9258 7 лет назад
sir can u plz give the full running code
Далее
Bottom view of a Binary Tree Algorithm
12:28
Просмотров 36 тыс.
Vertical Order Traversal of a Binary tree (Algorithm)
18:35
Мечты, которые сбылись♥️
00:17
Просмотров 560 тыс.
Paint Projects
00:17
Просмотров 1,3 млн
How Binary Search Makes Computers Much, Much Faster
6:51
Diameter of a Binary Tree (Code/ Algorithm)
17:15
Просмотров 94 тыс.