Lowest common ancestor of two nodes in Binary Tree Algorithm

  Рет қаралды 57,653

Vivekanand Khyade - Algorithm Every Day

Vivekanand Khyade - Algorithm Every Day

Күн бұрын

Пікірлер: 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!
@sagarmalshankhala6826
@sagarmalshankhala6826 2 жыл бұрын
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.
@ivantishchenko4686
@ivantishchenko4686 4 жыл бұрын
The author is a genius. Thank you very much!
@___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!
@uncletom321
@uncletom321 5 жыл бұрын
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!
@sushmanthnatha4019
@sushmanthnatha4019 4 жыл бұрын
Sir, I have watched many other people videos but your's are simply crystal clear
@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.
@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
@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.
@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
@user-uh4be8ci7i
@user-uh4be8ci7i 2 жыл бұрын
You are the best teacher sir thank you so much for all this solutions
@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.
@sandeepnallala48
@sandeepnallala48 3 жыл бұрын
thanks for making things clear and simpler sir
@adaz2724
@adaz2724 4 жыл бұрын
I love this guy, very clear explanation !!!
@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 3 жыл бұрын
It is inorder since we go leftmost,root and then right
@rohitjadhav512
@rohitjadhav512 3 жыл бұрын
No...its postorder.
@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
@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.
@shashwatagrawal8412
@shashwatagrawal8412 5 жыл бұрын
Amazing explanation. Please make more videos on Algorithms.
@RavinderSingh-nh6th
@RavinderSingh-nh6th 5 жыл бұрын
i dont know how to praise you. i have less words to appreciate you..
@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
@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.
@shwetadk1986
@shwetadk1986 5 жыл бұрын
You are simply amazing !. Keep the good work and spread the knowledge
@dipakkumarsinha5811
@dipakkumarsinha5811 4 жыл бұрын
Bahut badhiya sir .... Maja a Gaya sir
@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.
@shadesofspice5315
@shadesofspice5315 4 жыл бұрын
Clear explanation. Easy to understand
@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 :)
@andreeachirita9801
@andreeachirita9801 2 жыл бұрын
really good method of explaining!!
@nishantprajapati7166
@nishantprajapati7166 5 жыл бұрын
Awesome explanation, great sir.
@gouravsharma2755
@gouravsharma2755 6 жыл бұрын
Very good explanation.I liked the reasoning in your videos.
@4yt158
@4yt158 4 жыл бұрын
Your explanation is awesome bro! Thank you! :)
@danielshalam2258
@danielshalam2258 6 жыл бұрын
finally i understand how it works ! thank you very much !
@krishnavasani26
@krishnavasani26 3 жыл бұрын
Awesome video. Great explanation, keep up the good work sir!!
@abhishekkumargupta3043
@abhishekkumargupta3043 4 жыл бұрын
This man is awesome. Thank you.
@user-nd2lf7ss4x
@user-nd2lf7ss4x 2 жыл бұрын
so clear explanation!
@angadrajsingh4311
@angadrajsingh4311 4 жыл бұрын
Sir amazing explanation
@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.
@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; }
@kartikaygoel3042
@kartikaygoel3042 4 жыл бұрын
Great Video... PS-: can watch it at 4x comfortably
@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.
@beaglesnlove580
@beaglesnlove580 2 жыл бұрын
Ur a amazing teacher
@vivekanandkhyade
@vivekanandkhyade 2 жыл бұрын
👍👍
@vishalplayzz2580
@vishalplayzz2580 2 жыл бұрын
@@vivekanandkhyade sir pls continue this lectures
@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.
@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.
@Sudarshansridhar
@Sudarshansridhar 4 жыл бұрын
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)
@swj_69420
@swj_69420 4 жыл бұрын
Can you please tell how is this inorder? Shouldn't it be preorder
@aparna123pathak
@aparna123pathak 6 жыл бұрын
No doubt in awesomeness of explanation!!
@PIYUSH-lz1zq
@PIYUSH-lz1zq 2 жыл бұрын
DAMM !!! ABSOLUTLY SPOT ON
@thecreative9102
@thecreative9102 4 жыл бұрын
Thank you so much for great explanation
@payalsagar1808
@payalsagar1808 4 жыл бұрын
the best!☺
@rohinirt6362
@rohinirt6362 5 жыл бұрын
Thank you so much for all your video sir...
@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
@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.
@lokeshnegi5051
@lokeshnegi5051 4 жыл бұрын
well explained..
@chetannikam8129
@chetannikam8129 3 жыл бұрын
nice video.............................
@nikhilkumarmishra1225
@nikhilkumarmishra1225 5 жыл бұрын
You are godsent, thanks a lot!
@GROW_WITH_GBT
@GROW_WITH_GBT 3 жыл бұрын
Thanku ji
@7Critics
@7Critics 5 жыл бұрын
Great explanation!
@unboxingzindagi9972
@unboxingzindagi9972 4 жыл бұрын
Love you bro. You are so real!!
@sayalishelke9597
@sayalishelke9597 4 жыл бұрын
Best explanantion :) .Subscribed
@neetisharma3768
@neetisharma3768 5 жыл бұрын
Liked and subscribed :) Thank u for explaination
@anupkmr03
@anupkmr03 5 жыл бұрын
Nice explanation Thank you.
@vivekmit
@vivekmit 5 жыл бұрын
Good explanation
@jagritbhupal5836
@jagritbhupal5836 4 жыл бұрын
Thank you
@rajnikushwaha1459
@rajnikushwaha1459 6 жыл бұрын
sir your video is really awesome
@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
@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.
@arpitverma8060
@arpitverma8060 4 жыл бұрын
VERY WELL EXPLAINED||
@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 5 жыл бұрын
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
@kabboghosh1853
@kabboghosh1853 5 жыл бұрын
best teacher
@TS-ku2lg
@TS-ku2lg 4 жыл бұрын
Thank you so much sir!
@sumitkumar-wp4xd
@sumitkumar-wp4xd 7 жыл бұрын
great job sir
@tassda2787
@tassda2787 4 жыл бұрын
merci monsieur
@sunnyjain630
@sunnyjain630 6 жыл бұрын
i think u have used preorder traversal!!
@sakshamagarwal6852
@sakshamagarwal6852 5 жыл бұрын
good explanation sir, thanks :)
@pradeepsingh-cg8iv
@pradeepsingh-cg8iv 4 жыл бұрын
Thanks bro
@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
@abhishekkarn8918
@abhishekkarn8918 6 жыл бұрын
this is preorder traversal na sir?
@harirahul7703
@harirahul7703 3 жыл бұрын
great explanation but i think this is pre order traversal
@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
@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!
@ayushthakur733
@ayushthakur733 4 жыл бұрын
Explain it for (j,c).... 🤨
@adityachauhan1182
@adityachauhan1182 3 жыл бұрын
this solution will not work in case if B==root->node ans c is not present
@ricardosmith3752
@ricardosmith3752 5 жыл бұрын
What if one of the element is in the left branch of other ?
@SaurabhSingh-ch6nc
@SaurabhSingh-ch6nc 5 жыл бұрын
Love it ..!
@prajakta_patil
@prajakta_patil 5 жыл бұрын
Thank u
@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
@ayushthakur733
@ayushthakur733 4 жыл бұрын
What if the root node is one of the two node ??
@jingli2168
@jingli2168 3 жыл бұрын
Should be pre-order instead of in-order.
@SaurabhSingh-ch6nc
@SaurabhSingh-ch6nc 4 жыл бұрын
this is how the DSA faculty looks like!
@adityaojha2701
@adityaojha2701 3 жыл бұрын
It's good
@ruchirai5775
@ruchirai5775 4 жыл бұрын
nice !!
@suryajena1575
@suryajena1575 2 жыл бұрын
This won't work when one of the two nodes is not found.
@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.
@hellochii1675
@hellochii1675 5 жыл бұрын
10:08, I think you want to write "a", but not "LCA" ?
@bigjforever
@bigjforever 7 жыл бұрын
good. but a little bit slow. I need to see ur vdos at 2x speed
@ridimamittal4064
@ridimamittal4064 4 жыл бұрын
make more videos plzzzzzzzzzzz :(
@zeref6437
@zeref6437 5 жыл бұрын
if LCA is not present it will return wrong answer.
Bottom view of a Binary Tree Algorithm
12:28
Vivekanand Khyade - Algorithm Every Day
Рет қаралды 36 М.
LCA - Lowest Common Ancestor
15:56
Errichto Algorithms
Рет қаралды 61 М.
Самое неинтересное видео
00:32
Miracle
Рет қаралды 1,3 МЛН
Lowest Common Ancestor Binary Tree
11:08
Tushar Roy - Coding Made Simple
Рет қаралды 251 М.
Vertical Order Traversal of a Binary tree (Algorithm)
18:35
Vivekanand Khyade - Algorithm Every Day
Рет қаралды 71 М.
Lowest Common Ancestor Between 2 Binary Tree Nodes (A Recursive Approach)
20:30
Print Root to Leaf Path with Given sum(Print all K-Sum paths) in a given Binary Tree
14:56
Vivekanand Khyade - Algorithm Every Day
Рет қаралды 30 М.
Check if two binary trees are identical (Algorithm/code/program)
7:34
Vivekanand Khyade - Algorithm Every Day
Рет қаралды 27 М.
Spiral (zig-zag) level order traversal of a binary tree
14:12
Vivekanand Khyade - Algorithm Every Day
Рет қаралды 34 М.
Level Order Traversal of a Binary Tree (level by level and as a whole)
13:54
Vivekanand Khyade - Algorithm Every Day
Рет қаралды 51 М.
Interview Question: Random Binary Tree
21:52
Byte by Byte
Рет қаралды 15 М.
Path Sum III | LeetCode 437 | Medium
25:01
Code And Coffee
Рет қаралды 13 М.