How to solve (almost) any binary tree coding problem

แชร์
ฝัง
  • เผยแพร่เมื่อ 3 ม.ค. 2025

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

  • @edy231094
    @edy231094 4 ปีที่แล้ว +261

    This is the most undervalued tree algorithm video.
    Info here is gold. Thanks man!

    • @insidecode
      @insidecode  4 ปีที่แล้ว +3

      Thanks a lot for your comment

  • @tahaather7429
    @tahaather7429 ปีที่แล้ว +12

    Dude what an explanation. Thank you so much, using recursion to solve binary tree problems has been a really huge problem till now

  • @kwamenani7775
    @kwamenani7775 3 ปีที่แล้ว +43

    I love people who make things this simple, just subscribed to your channel.

  • @cakec9
    @cakec9 3 ปีที่แล้ว +73

    Wow. Brilliant nugget!! Literally opened my eyes to the problems I am solving!!

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

      same😍😍

  • @iez
    @iez 3 ปีที่แล้ว +15

    This is actually an amazing piece of intuition

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

    Discover the new graph theory algorithms course: inscod.com/graphalgo
    🔴
    / \
    🔵-🔴
    | |
    🔴-🔵

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

      I will leave a dislike because you didn't explain how it actually works in the code. Like at 1:41 what does assigning a variable to the recursive function even do and mean? Please help me understand. Like why assign the variable and not just return root.data + treesum(root.left) + treesum(root.right) instead? Thank you

  • @mahimapatel8706
    @mahimapatel8706 4 หลายเดือนก่อน +39

    recursion is really messing with my mind

    • @Singh54321
      @Singh54321 2 หลายเดือนก่อน

      true af

    • @ankitdubey3773
      @ankitdubey3773 29 วันที่ผ่านมา +1

      Trueeeee😭😭

  • @indraneel6601
    @indraneel6601 3 ปีที่แล้ว +15

    Give this guy a whole lot of subscribers!!!!!!
    I feel confident to solve tree problems.You Rock man
    Please Create a video how to solve graph problems.

  • @marcin-guitar
    @marcin-guitar 2 ปีที่แล้ว +3

    Well, this is true for a certain kind of trees, where each node counts as equivalent. The same algorithm doesn't necessarily apply to segment trees, binary search trees, KD-trees etc. where an element's position in the tree is more important than its sole presence in the tree.

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

      Yes it doesn't apply for all types of trees sure

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

      @@insidecode do u have a similar video coming for binary search trees

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

    Very easy described man!
    Give this man a medal!

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

      Thankss ❤️

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

    For height of tree it must return -1 if root is null.(2.42)

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

      that depends if u are taking the height of a leaf node to be 1 or 0, it depends upon the book u are using

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

    Thank u so so soo much man
    Non linear data structures were really tough for me
    From school to college
    It was tough for me to understand
    But now when i am preparing for a job
    I saw your video
    And u saved my life
    Thank u so much

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

    I just wanna say, that thinking of recursion in a way where we fragment the root node made sooooo much sense.
    My exam is next week, thanks!

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

    Fix: At 2:38, the base case should return -1 not 0

    • @Raven-zk2xq
      @Raven-zk2xq 3 ปีที่แล้ว

      Maybe I misunderstand why, but I think of it like this. If the input is simple None to begin with, is the height 0 or is it 1? From my understanding it would be 0, similar to how an len(arr) where arr is an empty array would also return 0.

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

      @@Raven-zk2xq Yes but height 0 is the height of a tree with one node only (the root), so when a tree has no nodes at all, its height is -1

    • @miras1433
      @miras1433 23 วันที่ผ่านมา

      That's like saying if you have 0 dollars in your bank account you're 1 dollar in debt. A 0 node tree has height 0 in the same way 0 dollars = 0 dollars

  • @hydromarlon4168
    @hydromarlon4168 3 ปีที่แล้ว +4

    Bruh. This finally makes sense.

  • @mdzikrullah9575
    @mdzikrullah9575 3 ปีที่แล้ว +13

    This was the coolest explanation of complex problem ever..Thank you

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

      You're welcome!

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

      exactly. Once you realize these complex problems all have some pretty easy-to-remember patterns that make them easier to solve, it's just a matter of knowing which pattern to apply.

  • @RR-wx8gp
    @RR-wx8gp 8 หลายเดือนก่อน +1

    Honestly....
    This video is just the best!!!

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

    You just earned a new subscriber....
    Spent hours searching for a simple explanation on Trees, found it in your channel.

  • @levidworkin851
    @levidworkin851 9 หลายเดือนก่อน

    Hey Inside Code I loved the video! I just wanted to correct the treeHeight algorithm. It needs to return -1 if the root is None because currently with the returning of 0, the leaf nodes get a height of 1 instead of a height of 0 which will cause the resulting tree height to be 1 greater than it should be.

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

    Finally, this is what I have been looking for; algorithms with proper visualizations. I had to buy all your 5 courses on udemy

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

      Thanks a lot for your comment!

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

      hello, is his dynamic programming course in python?

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

      Hello, yes it is

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

      @@insidecode thanks for the reply, I will purchase it. are all your other courses on Udemy in python as well ?

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

      @@ifeanyi3713 You're welcome! Yes

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

    bro just opened my mind

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

    u r genius...the most simple ways i see to learn this bianry tree...tysm blud

  • @auntyBill
    @auntyBill 8 หลายเดือนก่อน

    Amazing way of presenting… it’s awesome

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

    amazing video !! please make more videos in binary trees and graphs

  • @danielapineyro1998
    @danielapineyro1998 3 ปีที่แล้ว +8

    MAN YOU MADE ME UNDERSTAND RECURSION, finally! Thank you so much!

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

      You're welcome! Check the 3 hours recursion course I published recently here

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

      @@insidecode I’ll check it out. Thank you!

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

      @@danielapineyro1998 I don't have a video on that but I can explain it to you here, did you see in this video the function where we calculate the sum? We calculate the sum from the left, the sum from the right, and we add to them the parent's value. For your problem, you take the same function, but you just add two things, a global boolean variable output that starts at true, and a condition before returning the sum in the recursive function, that condition is: if root.data != left+right: output = False

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

      @@danielapineyro1998 What we're doing here is that we're traversing the tree, but at each node, after calculating the sum of both subtrees, we're comparing with the parent's value, and we're setting the final output to false if they're different, we used a global variable to be able to access it from any call

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

      @@danielapineyro1998 The code would be something like this:
      output = True
      def tree_sum(root):
      global output
      if root is None:
      return 0
      else:
      left = tree_sum(root.left)
      right = tree_sum(root.right)
      if root.data != left+right:
      output = False
      return root.data + left + right
      def all_equal(root):
      global output
      tree_sum(output)
      return output

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

    thank you for this video. i'm really bad at binary trees but this way of thinking about it really helps

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

    LEGIT MAGICK!!!!! i just solved a question using this logic. SO LUCID. SO CLEAR. TO THE POINT

  • @kacap-p6t
    @kacap-p6t 3 หลายเดือนก่อน

    To the point and well explained!

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

    The sum of elements at 1:21 is not 120.

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

      @@insidecode That was a bit nit-picky of me to point that out. The video was still very good and I look forward to watching more from you.

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

      Hello, after watching it again, it's actually 120, because we're returning sum of left subtree + sum of right subtree + root's value, and 52 + 53 + 5 gives 120 not 115, you forgot to also add the root's value which is 5

  • @ragapriyakarthikeyan3139
    @ragapriyakarthikeyan3139 8 หลายเดือนก่อน

    This is exactly what I was looking for💥

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

    This man is literally the best!!!

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

    Thanks man, this is awesome!!

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

    Super helpful ! Great content

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

    Thanks we got a whole diffrent persepective of solving problem. Could you make this kinda videos for other DS also, pls

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

      You're welcome! I'll see

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

    Wow, thats such a good approach! Thanks

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

      You're welcome!

  • @dhairya18
    @dhairya18 4 ปีที่แล้ว +3

    Very sell described. Good work. Keep it up👍

  • @TomGoo
    @TomGoo 10 หลายเดือนก่อน

    wow this actually helped me so much thx

  • @Tab-It
    @Tab-It 8 วันที่ผ่านมา

    Remember guys for understanding recursion you first need to understand recursion

  • @madhavkwatra5888
    @madhavkwatra5888 7 หลายเดือนก่อน

    Superb explanation , Thanks.

  • @Satyamkumar19113
    @Satyamkumar19113 8 หลายเดือนก่อน

    Just the best idea to approach binary 🌲 questions

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

    Thanku sor finally i understood Tree data after 2 months ,thanks a lot Your content is freat

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

    Amazing man! very helpful

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

    This actually works holy shit this is insane

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

    Thank you so much for this video!

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

      Glad it was helpful!

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

    Can we solve every binary tree problem using either BFS or DFS?

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

    Great video! I'm definetly subscribing😄

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

      Thanks for subbing!

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

    great explanation sir, thank you so much

  • @aspiretechie1191
    @aspiretechie1191 2 หลายเดือนก่อน

    Recursion is the base algo you need to master before learning trees, If you are good at recursion then trees is nothing.

  • @yao-z2t
    @yao-z2t 18 วันที่ผ่านมา

    Such a good video! But we have to think that recursion is not always the best solution

  • @germanrud4541
    @germanrud4541 2 หลายเดือนก่อน

    what is the complexity of this kind of algorithms?

  • @KeshavKumar-qz7ow
    @KeshavKumar-qz7ow 3 ปีที่แล้ว +1

    1:20 the sum will be 110 instead of 120

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

      You took time to calculate :0 But thanks for telling me!

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

    wow very well explained, thank you sooo much!

  • @playingwithmhdsulu786
    @playingwithmhdsulu786 7 หลายเดือนก่อน

    Help full video thank you❤

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

    Your code in 1:31 doesn’t seem to work

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

      What error you got? Maybe you didn't create Tree class or something

  • @JohnDoe-yb9rg
    @JohnDoe-yb9rg 2 ปีที่แล้ว

    Will this formula work for Visible Tree Node problem? If yes, how? Thank you!

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

    Kindly make a similiar video on Graphs. It will be soo helpfull. Thanks

  • @prasanthbupd
    @prasanthbupd 4 หลายเดือนก่อน

    the best video I have ever seen in my life definitely a like. and a subscribe

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

    This is super cool. Thanks 👍🏻

  • @suri4Musiq
    @suri4Musiq 6 หลายเดือนก่อน

    Isn't this just post-order DFS?

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

    Super helpful bro. Thanks a lot ❣️

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

    Wonderful explaination

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

    With all respect to the author, this is trivial problems, I thought you clarify at least one of non-trivial: controlling levels of tree, controlling branches of tree, controlling nodes of tree or controlling symmethric of tree.

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

    isn't the tree that appears at 30 seconds not a valid bst?

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

      It's not supposed to be a BST

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

    Wow! Super helpful!

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

    simple beneficial and inspiring

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

    SUPER HELPFUL!

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

    Omg it's literally always the same thing, how have I never noticed this before?

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

    It's really Awesome 🤩

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

    You've earned a new subscriber 🔥

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

    How do you create the animation? Are you using any software for tha?

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

      With PowerPoint

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

      @@insidecodeOhhk. Thanks a lot.

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

      @@shashicsnitjsr You're welcome!

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

    best video. perfectly explained.

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

    This nails it

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

    Hi..i have to appear a HireVue interview soon for Deloitte. Will this coursepack be useful to me?

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

      It contains a lot of popular problems on different patterns and data structures, so it will be useful for you for sure

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

    that bri-eff though XD (brief is said as breef, not bri-eff)

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

      oh thanks for info!

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

    Wow 😎 🥺 thanks brother no more grinding

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

    OMG thank u so much !

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

    But what about trees that are not binary?

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

      Also works with k-ary trees, instead of calling the function on tree.left and tree.right, you call the function on each children by using a for loop then you join the results (Example: sum of nodes of a k-ary tree:
      ...
      sum_children = 0
      for children in tree.children:
      sum_children += tree_sum(children)
      return tree.val + sum_children

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

      @@insidecode Thanks!

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

      @@yoman9446 You're welcome!

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

    A BIG Thank you 🌹

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

    Damn never knew tree's can be broken down like this

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

    How do you learn this for sure?

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

    Can we have pdf of these codes?

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

      I didn't make a PDF of them sorry

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

    This is amazing

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

    Very Nice.God bless you..

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

    Thanks a lot🖤

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

    OMg this is amazing lol thank you so much

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

    can I donate to you on patreon? I rly liked this video.

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

    Why you are so smart?

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

    Great video

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

    Thanks, share code too!!

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

    Great channel

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

    thank you!

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

    Please dont try to eat mic when ur speaking. Its not a proper etiquette. Btw very nice explanation.

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

      Thanks! This is quite an old video, can you check latest ones and tell me if sound quality improved?

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

      @@insidecode Woah its really good. Just curious what mic do you use now?

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

      The same mic (M-Audio Uber mic), just improved audio post processing

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

    Underated video

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

    Watch it in 0.75x

  • @MrLump
    @MrLump 5 หลายเดือนก่อน

    4:20 nice

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

    Recursive thinking

  • @germanrud4541
    @germanrud4541 2 หลายเดือนก่อน

    awesome, thxxxxx

  • @subee128
    @subee128 8 หลายเดือนก่อน

    Thanks

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

    Thx a lot!!!!!

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

      You're welcome!

  • @lorenzo.fiorini
    @lorenzo.fiorini 4 ปีที่แล้ว

    Easy and straight forward