Height of a Binary Tree / Maximum depth of a binary tree Algorithm [REVISITED]

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 พ.ย. 2024

ความคิดเห็น • 225

  • @codewithree930
    @codewithree930 3 ปีที่แล้ว +33

    Wow! Finaly I got someone who have deeply explained it..I got the feel...
    Thanks a lot🙂

    • @chaminduperera3998
      @chaminduperera3998 3 ปีที่แล้ว

      mmmmm....

    • @Man_of_Culture.
      @Man_of_Culture. 3 ปีที่แล้ว +1

      Yep, he gives us the feel of ds

    • @anandoganiya9070
      @anandoganiya9070 3 ปีที่แล้ว +1

      not like apna college

    • @Man_of_Culture.
      @Man_of_Culture. 3 ปีที่แล้ว

      @@anandoganiya9070 both of them are good , I follow many TH-cam channel on DS and Algo because in the end it's about learning and learning .

    • @anandoganiya9070
      @anandoganiya9070 3 ปีที่แล้ว

      @@Man_of_Culture. ik but they are running which leads to misunderstanding and lots of confusion but this guy explains it just right best for beginners

  • @vicky888
    @vicky888 3 ปีที่แล้ว +14

    I've never seen someone has such great patience,really good explanation!

  • @KeithWarter
    @KeithWarter 4 ปีที่แล้ว +24

    Thank you for these videos! They are much appreciated!!!! This stuff needs to be slowed way down to grasp it at first just like a musical instrument. You taking the time to white board it like this is really really helpful.

  • @samyakjain8384
    @samyakjain8384 5 ปีที่แล้ว +1

    Explaining recursion is very tough and you explained it in very easy manner

  • @farahluvs1d
    @farahluvs1d 4 ปีที่แล้ว +1

    thank you, this is the best most detailed explanation i found,rather than just writing the code and explaining in 5 monutes

  • @anupamdey4893
    @anupamdey4893 3 ปีที่แล้ว +2

    Thank you for the in-depth explanation. No other video on YT explains the recursive calls which is the most imp part of trees.

  • @amoghgowda6117
    @amoghgowda6117 3 ปีที่แล้ว +1

    I have seen many videos, Everyone says call the method recursively to find left height and right eight and find the max btw them. But no one told how the code is running line by line. But your the only person who showed how recursion works with 123 way of teaching, Loved the video.

  • @vaishali3339
    @vaishali3339 2 ปีที่แล้ว +1

    Was about to have a breakdown because I was not getting this problem but your video made it very easy to understand. Thank you for the step by step explanation. धन्यवाद!

  • @xiaolongli1898
    @xiaolongli1898 4 ปีที่แล้ว +6

    There is an error:
    for the last part:
    if(left > right) {
    int h = 1 + left;
    }
    else {
    int h = 1 + right;
    }
    return h;

  • @pauldaviddavies
    @pauldaviddavies 3 ปีที่แล้ว

    Wow, four years ago yet explaining the concept that deep as if it is being done today. Vivekanand that is great and deep. Thank you.
    Where are my likes for him guys?

  • @love_piano_3000
    @love_piano_3000 10 หลายเดือนก่อน +1

    I have literally searched every video related to this topic and this one cleared all my doubts , Thanking you so much Sir... 😃😃😃

  • @mouseclicker4955
    @mouseclicker4955 3 ปีที่แล้ว

    Looked for explanations everywhere and you were the only one that explained it clearly enough for me to understand. Thank you!

  • @rishipalbhatia
    @rishipalbhatia 6 ปีที่แล้ว +2

    If you compile this code, you will get an error on the line return h;
    That's because the two declarations of variable h are inside the scope of if { } and else { }. You're trying to use h outside it's scope.

  • @shivamnerwal72
    @shivamnerwal72 3 ปีที่แล้ว +2

    You are doing a great work sir ,
    Your tutorials are really very helpful
    🙏🙏

  • @viveknandan4950
    @viveknandan4950 2 ปีที่แล้ว

    Never thought someone can explain it so deeply... Thank you so much

  • @kartiksuman9814
    @kartiksuman9814 3 ปีที่แล้ว

    very well explained bhaiya....hmko ni lg atha ki mai isse samjh paunga, but you really made it possible...thanks a lot..

  • @danielchia1389
    @danielchia1389 4 ปีที่แล้ว +2

    This is helped me understand it after watching other videos that didnt explain it as detailed as you. Thank you !!

  • @piyushsharma1638
    @piyushsharma1638 5 ปีที่แล้ว

    I really liked the way you show small details like, why we add 1 in finding the height of a binary tree, most of of the videos simply add 1 and not explain any reason behind it, i know it is easy part but at least you explained.

  • @VikiSangani
    @VikiSangani 5 ปีที่แล้ว +2

    Very easy and to the point explanation. Presentation is also very nice. Thank you for sharing knowledge. Looking forward the same in future.

  • @KamalKumar-bk6rn
    @KamalKumar-bk6rn ปีที่แล้ว

    Thank you Vivekanand for the clear explanation.

  • @modernsanskari4398
    @modernsanskari4398 7 ปีที่แล้ว +16

    In step 3 you can directly write.
    h = max(left , right) + 1;
    return h;

    • @yoonlee5278
      @yoonlee5278 5 ปีที่แล้ว +4

      I think he meant to explain purely used conditional statement for the people to understand more easily.

    • @reyou7
      @reyou7 5 ปีที่แล้ว +3

      You can take entire code, and put in a text box, and turn into a single line.
      shorter != better.

  • @ritik8879
    @ritik8879 4 ปีที่แล้ว

    Excellent explanation for recursion . Really you have a very good understanding of dsa

  • @vuramvincent721
    @vuramvincent721 2 ปีที่แล้ว

    Thank you so much !!! you have cleared all the confusion for the algorithm for searching the height of BST

  • @LarryRuane
    @LarryRuane 7 ปีที่แล้ว +18

    Thanks, great explanation. Just one small suggestion with the code -- the variable h is declared locally within the "if" and "else" blocks, so is no longer in scope for the "return" statement. So you would need to declare h before the "if" statement.

    • @usman3D
      @usman3D 7 ปีที่แล้ว +1

      Exactly my thoughts

  • @rishabhjaiswal3276
    @rishabhjaiswal3276 2 ปีที่แล้ว

    Your are gem sir , I saw so many video but after watching your video I got the how its working , keep posting videos :)

  • @chauhanrachit
    @chauhanrachit 6 ปีที่แล้ว +3

    Can you please create playlists under your channel ? Like trees, dynamic programming, graph

  • @ryujiganaha9645
    @ryujiganaha9645 4 ปีที่แล้ว +5

    Thank you so much for the great explanation! Big appreciation from Japan

  • @shreyassule2219
    @shreyassule2219 4 ปีที่แล้ว +2

    Hi Sir, Thank you so much for these videos. Your style of explaining algorithms with examples and then walking us through each step of the code really helps to grasp the concept very effectively. If I may be allowed for just one small suggestion can you also please explain the time complexity for these? Regardless, great fan of your teaching. Keep up the good work!!

  • @vickyhu6970
    @vickyhu6970 4 ปีที่แล้ว +2

    You are excellent at explaining things clearly! Thank you for this video.

  • @arjunsankarlal5296
    @arjunsankarlal5296 3 ปีที่แล้ว

    Very slowly explained in the start. But you made it clear! Thanks :)

  • @raunak02
    @raunak02 3 ปีที่แล้ว

    Thanks a lot sir, you have removed all my confusion created by my prof.

  • @jammy2003
    @jammy2003 3 ปีที่แล้ว

    THANKS SOO MUCH!!! I had a great deal of difficulty to understand the recursion portion of this solution! You explained it very easily! Thanks again man!

  • @RN-jo8zt
    @RN-jo8zt 9 หลายเดือนก่อน

    Def: The height of a node in a binary tree is the largest number of edges in a path from a leaf node to a target node
    but why we still adding 1?

  • @souravghosh7093
    @souravghosh7093 4 ปีที่แล้ว

    This is the best explanation i found. Thanks. Need to watch at 2x

  • @onyinyechichukwuma689
    @onyinyechichukwuma689 3 ปีที่แล้ว

    The best explanation I've seen online. Thanks very much!

  • @sunitamishra5475
    @sunitamishra5475 2 ปีที่แล้ว

    Finally someone explained it....thank you so much

  • @jamesqiu6715
    @jamesqiu6715 7 ปีที่แล้ว +1

    appreciate you make a revisited video to cover previous doubt on height definition. good job.

  • @vivekmit
    @vivekmit 5 ปีที่แล้ว

    In a nut-shell ,we are traversing the a binary tree to count the level at each node. Can you brief we, which kind of binary traversal we implemented in this video ? Can we implement same logic with different kind of traversal like inoder/preorder ?

  • @m.motivation6299
    @m.motivation6299 2 ปีที่แล้ว

    The best explanation ever

  • @mfgucluer
    @mfgucluer ปีที่แล้ว

    THANK YOU VERY MUCH SIR. Your ability to express is very good.

  • @gokarnapandey4930
    @gokarnapandey4930 3 ปีที่แล้ว

    Wow sir 🥰🥰....I could not hold myself to appreciate your explanation...
    Thank you sir...

  • @yasirshaikhkhan6189
    @yasirshaikhkhan6189 5 ปีที่แล้ว

    Thanks sir.... your clear explanations and presentation help better to understood..

  • @abdelrhmanahmed1378
    @abdelrhmanahmed1378 4 ปีที่แล้ว

    int find_height(BstNode* root)
    {
    if (root == NULL)
    return -1;
    else return max(find_height(root->left), find_height(root->right)) + 1;
    }
    you need to return -1 ,because last recursion on the leaf node must return 0 ,because the height of the
    leaf node is 0 so max(-1,-1) +1 --> will evaluate to 0
    and for those who are intelligence enough will realize that when we return to the root node after we finish the left recursion the height will be shorter by one ,that one will get added after we finish the right sub-tree
    if the right sub-tree is shorter that the left so that one that get added will get the us right height ,and vice versa if the right height
    is longer

    • @abdelrhmanahmed1378
      @abdelrhmanahmed1378 4 ปีที่แล้ว

      and by the way the definition of tree height is the max edges from the root to the longest path
      to the leaf ,so its not 4 or 5 there is only one right answer which is 4 for this example

  • @vishnu_bhatt
    @vishnu_bhatt 6 ปีที่แล้ว

    C++ code:
    int height(Node* root) {
    if(root==NULL || root->left==NULL && root->right==NULL) {
    return 0;
    }
    int left = height(root->left);
    int right = height(root->right);
    if(left>right) {
    return left+1;
    } else {
    return right+1;
    }
    }
    The height of a node is the number of edges on the longest path between that node and a leaf.
    The level of a node is defined as: 1 + the number of edges between the node and the root.

  • @chetanjain5097
    @chetanjain5097 2 ปีที่แล้ว

    You explain better than anyone else. Most videos explain logic but don't have code. You do show code. But I just haven't seen any single video that explains with test cases (with input data) and code. After viewing your video I am still now sure what value of node is passed to the function. Is it pointers to left and right edge or is it something else?

  • @anjalidarokar2408
    @anjalidarokar2408 4 ปีที่แล้ว +1

    Sir, the height of a binary tree is the number of edges in the longest path from the root to the leaf, not the number of nodes from the root to the leaf, therefore, here, height = 4.

    • @Sun-yv9fr
      @Sun-yv9fr 4 ปีที่แล้ว

      you are talking about the depth. Depth is 4 and height is 5.

    • @adityasagarr
      @adityasagarr 3 ปีที่แล้ว

      @@Sun-yv9fr google it...

  • @prinsedits
    @prinsedits 2 ปีที่แล้ว

    thankyou so much sir for such a detailed explanation

  • @iasaspirant1441
    @iasaspirant1441 2 ปีที่แล้ว +1

    In code everything is correct but return value is -1 so we get height of binary tree is equal to 4 not 5

  • @adarshlakshmanan
    @adarshlakshmanan 6 ปีที่แล้ว

    The height of the tree is calculated wrong. Counting the edges, the height is 4, not 5.
    This is how you correct it:
    In the program,
    if (p==null){
    return -1; //Instead of 0 as shown in the video.
    }
    This also make sense conceptually since the depth of a Null node is -1 & not 0.

    • @sumanreddyg8245
      @sumanreddyg8245 5 ปีที่แล้ว

      So for a NULL tree what is the height you want to return -1 ? I hope 0 is right answer, if zero is right then height is 5 not 4, for NULL tree both depth and height must return 0

  • @juhisingh4509
    @juhisingh4509 4 ปีที่แล้ว

    Very good explaination of recursion ...Thanku sir

  • @vijaysagoo2464
    @vijaysagoo2464 3 ปีที่แล้ว

    Thank you for the in-depth explanation

  • @preetichauhan3272
    @preetichauhan3272 6 ปีที่แล้ว

    Thanks Vivekanand for your videos, your algorithms helps me a lot in learning Java.

  • @bryanlee5522
    @bryanlee5522 ปีที่แล้ว

    Thank you, I understand after seeing step by step

  • @JasPer22996
    @JasPer22996 3 ปีที่แล้ว

    Well said. Good explanation. Greetings from new york......
    Cubao

  • @nitinmonga6975
    @nitinmonga6975 4 ปีที่แล้ว

    Very well explained sir.. Thank you so much

  • @mdanishossain026
    @mdanishossain026 2 ปีที่แล้ว

    Tremendous explainatio sir, ❤from BD

  • @tumble_dont_fall
    @tumble_dont_fall 4 ปีที่แล้ว

    best explanation on the internet

  • @ashishchaudhari8223
    @ashishchaudhari8223 4 ปีที่แล้ว

    Thnks sir by explaing thic concept of maxdepth and also recursion function

  • @2010aishwary
    @2010aishwary 4 ปีที่แล้ว +1

    in this way the height of the binary tree with only root node will be 1 but the actual height of binary tree with only root node is 0 ??

  • @prathameshautade2679
    @prathameshautade2679 3 ปีที่แล้ว

    Really good explanation, keep up the good work

  • @shreyasangane3822
    @shreyasangane3822 4 ปีที่แล้ว

    Your are Awesome !!!!!!!!!!!!!!!!!!!!! You made it very simple and clear.

  • @waynegreen7970
    @waynegreen7970 3 ปีที่แล้ว

    Good content! Detailed and precise explanation!

  • @prashanthchinthilla3968
    @prashanthchinthilla3968 3 ปีที่แล้ว

    By this i learned recursion too thanks:)

  • @amangarg6531
    @amangarg6531 7 ปีที่แล้ว +1

    sir please make the video on clone a binary tree with random pointers and also bactracking concept. your videos are very helpful for us🙂

  • @aditi_jha
    @aditi_jha 3 ปีที่แล้ว

    Best explanation ever!!!!

  • @jitendragupta4661
    @jitendragupta4661 4 ปีที่แล้ว

    The best explanation!Keep posting!

  • @JULIUSNGIGIux
    @JULIUSNGIGIux 4 ปีที่แล้ว

    Please update this video with the correct information. The height of a binary tree is the number of edges in the longest path from the root to the leaf, not the number of nodes from the root to the leaf.

  • @ShreyasGaonkar
    @ShreyasGaonkar 3 ปีที่แล้ว

    Great explanation on this and the video about the diameter of a tree. Was able to solve the leetcode question on the first go. Sub'ed :)

  • @lokeshchennamchetty1019
    @lokeshchennamchetty1019 6 ปีที่แล้ว

    height doesn't include root node, so height of node is 4 not 5 ,need correction!!

  • @Gudsan
    @Gudsan 5 ปีที่แล้ว

    very nice explanation sir

  • @sagarkolhe5927
    @sagarkolhe5927 4 ปีที่แล้ว

    great job vivekanand....

  • @gauravbhagat8831
    @gauravbhagat8831 3 ปีที่แล้ว

    Got in one go thank you Vivekanand !

  • @SICSSonamSharma
    @SICSSonamSharma 3 ปีที่แล้ว

    Amazing explanation!

  • @mohamedelkayal8871
    @mohamedelkayal8871 7 ปีที่แล้ว

    Your videos have been very helpful

  • @maazalam66
    @maazalam66 7 ปีที่แล้ว +1

    Really nice explanation. ...thank you ...keep making videos

    • @coderajput1816
      @coderajput1816 7 ปีที่แล้ว

      no it is not working properly....if any mistake in my code then please comment
      i uploaded the code in my comment

  • @anandoganiya9070
    @anandoganiya9070 3 ปีที่แล้ว

    bro what to say far better than apna college

  • @FamousEgyptboy
    @FamousEgyptboy 6 ปีที่แล้ว +1

    Thank you sir for great explanation !

  • @natesh1
    @natesh1 7 ปีที่แล้ว +15

    Many times I forget that I am watching in 2 x speed. Lol!

  • @ArunKumar-gp2vq
    @ArunKumar-gp2vq 4 ปีที่แล้ว

    Thank you so much brother you are doing great job

  • @MrRimmy
    @MrRimmy 6 ปีที่แล้ว

    VERY GOOD EXPLAINATION

  • @itis_beard_man2471
    @itis_beard_man2471 4 ปีที่แล้ว +1

    Good, I understand this very easily thank you!

  • @revanth9272
    @revanth9272 3 ปีที่แล้ว

    thank you sir. worth to watch your videos..!!

  • @harshitraj4199
    @harshitraj4199 4 ปีที่แล้ว

    finally mil hi gya.... thanks a lot

  • @layavullakula1908
    @layavullakula1908 5 ปีที่แล้ว

    Osm explanation sir.....but pls little bit faster must be there

  • @ashwinsingh1731
    @ashwinsingh1731 3 ปีที่แล้ว

    finally found what i needed ... thank you sir

  • @deepakborah8335
    @deepakborah8335 7 ปีที่แล้ว

    Very good explanation.

  • @shilpitamedhi3204
    @shilpitamedhi3204 3 ปีที่แล้ว

    great explanation thank u sir

  • @ashaykapoor613
    @ashaykapoor613 4 ปีที่แล้ว

    Thanks, buddy! It really Helped

  • @Anonymous-jt3yz
    @Anonymous-jt3yz 5 ปีที่แล้ว

    Best Explanation Ever

  • @coderajput1816
    @coderajput1816 7 ปีที่แล้ว +1

    but this code is not running properly....its wrong
    #include
    #include
    struct tree
    {
    int data;
    struct tree *left,*right;
    };
    int height(struct tree *ptr)
    {
    if(ptr==NULL)
    return 0;
    int lh=height(ptr->left);
    int rh=height(ptr->right);
    if(lh>rh)
    return(lh+1);
    else
    return(rh+1);
    }
    struct tree *newNode(int data)
    {
    struct tree *t;
    t=(struct tree *)malloc(sizeof(struct tree));
    t->data=data;
    t->left=t->right=NULL;
    return t;
    }
    int main()
    {
    struct tree *root;
    root=newNode(4);
    root->left=newNode(5);
    root->right=newNode(10);
    root->left->left=newNode(24);
    root->left->left->left==newNode(2);
    root->left->right=newNode(34);
    root->right->left=newNode(12);
    printf("%d",height(root));
    return 0;
    }
    my codes output is 4 but it is producing 3...why?
    i follow ur video
    ur explanation is good but why it is not giving correct answer

    • @rahulraghav7792
      @rahulraghav7792 7 ปีที่แล้ว +1

      "root->left->left->left==newNode(2);" this is wrong..!! only = not ==

  • @jaysahu357
    @jaysahu357 7 ปีที่แล้ว

    very nice explaination sir

  • @ShreyaSingh-vr9qi
    @ShreyaSingh-vr9qi 4 ปีที่แล้ว

    Hii, Can u please make video on this " Find height of a special binary tree whose leaf nodes are connected ". Thanks In Advance !!

  • @azizas9366
    @azizas9366 6 ปีที่แล้ว

    I like your explanation algorithm

  • @bhupalibaishya2136
    @bhupalibaishya2136 6 ปีที่แล้ว

    if p= null it should return -1 for a single node it returns 0

  • @m_arslan_
    @m_arslan_ 3 ปีที่แล้ว

    Thank you, sir! you really helped me

  • @codelover847
    @codelover847 6 ปีที่แล้ว

    Great explanation👍👍

  • @sasikiranjutury5296
    @sasikiranjutury5296 4 ปีที่แล้ว

    The Code is wrong bro. Here you are updating the value of h but not left or right.For every recursion the left and right value remains same.Please update the code as
    if(left>right)
    return(left+1)
    else
    return(right+1)

    • @mr.poopybutthole3719
      @mr.poopybutthole3719 4 ปีที่แล้ว

      Nothing is wrong with the code bro. He has just introduced a new variable H for returning the value,you can return (left+1) directly or via storing it in a variable.😊

  • @shyamaharihar2425
    @shyamaharihar2425 3 ปีที่แล้ว

    Thankyou so much , finally understood :)

  • @jaysahu357
    @jaysahu357 7 ปีที่แล้ว +2

    sir could you tell me how to think to solve any problem by recursion

    • @timr1810
      @timr1810 5 ปีที่แล้ว +2

      Step 1, base check - are you at the bottom, in this case node = null. if you are reversing a string, then its when the string length is zero. Basically this is the point when your recursion must stop. This is always the first thing you do!
      Step 2, reduce the working set - for recursion to work, each time you make a recursive call you must reduce the set somehow, else you have an infinite loop. In this case the reduction is node.left or node.right, For string reverse this is when you remove one char from your string
      Step 3. make your recursive call and "Assume it Works"!, that is when you call height(node.left) assume the return is the height of what you passed in. If you are reversing a String, the response is a reversed-string
      Step 4. apply logic - This step varies depending on what you are trying to accomplish:
      In case of height, you know you want the max, so take the max of rightHeight, leftHeight.
      In the case of a string reverse . You have two parts, the part from the reduction step( the char) and the part returned from the recursion call (the reversed sub-string) - so if you took the char from the beginning of the string, you put it at the end of the reversed sub string.
      Hope this helps, it helps me to keep recursion straight. - Step 4: Assume it works is the key

  • @natesh1
    @natesh1 7 ปีที่แล้ว

    thank you so much, for these videos. Awesome work