L15. Check for Balanced Binary Tree | C++ | Java

  Рет қаралды 370,944

take U forward

take U forward

Күн бұрын

Пікірлер: 325
@takeUforward
@takeUforward 3 жыл бұрын
Please likeeee, shareeee and subscribeeeeeeee :) Also follow me at Insta: Striver_79
@jaydeeppurohit1
@jaydeeppurohit1 3 жыл бұрын
thank's man for the free tutorials very helpful
@democratcobra
@democratcobra 3 жыл бұрын
Incredible mind.
@SatyamEdits
@SatyamEdits 2 жыл бұрын
Bhaiyaaa...."in Brief" mtlb "in short" hota hai......😅😅
@AmanAshutoshBCS
@AmanAshutoshBCS Жыл бұрын
Sir, Timestamp 8 minute and 10 second. Sir, I am unable to understand in what case we will be getting -1 for lh and rh.???
@pulkitjain5159
@pulkitjain5159 Жыл бұрын
i think on 9:21 , it should be if( lh ==-1 || rh == -1) return -1 , beacuse if any of the subtree is unbalanced , my whole tree is unbalanced. if does'nt require to have my both subtree unbalanced.
@リンゴ酢-b8g
@リンゴ酢-b8g 2 жыл бұрын
A balanced binary tree, also referred to as a height-balanced binary tree, is defined as a binary tree in which the height of the left and right subtree of any node differ by not more than 1.
@shashwatpriyadarshy7681
@shashwatpriyadarshy7681 3 жыл бұрын
Correction : Instead of && (AND) in the first if-condition of lh & rh, it should be || (OR) .
@joseph2073
@joseph2073 3 жыл бұрын
@asishcodes
@asishcodes 2 жыл бұрын
When will lh or rh becomes -1? And how?
@100mehulsingh8
@100mehulsingh8 2 жыл бұрын
@@asishcodes Suppose, when we are calculating the max height of a subtree, it might not satisfy the balanced tree condition, so a height of -1 will be returned instead of the max height !!!
@maheshjindal2622
@maheshjindal2622 2 жыл бұрын
@@asishcodes it'll become when the difference condition(if(abs(rh - lh))) will be executed
@maheshjindal2622
@maheshjindal2622 2 жыл бұрын
he made a correction in the code!
@abhishekarora437
@abhishekarora437 3 жыл бұрын
Never thought that this question can be solved like this also....very easy code A big thank you to striver
@warriorgaming9509
@warriorgaming9509 2 жыл бұрын
So true man
@tanishqdadhich8589
@tanishqdadhich8589 2 жыл бұрын
The time complexity of the first approach will be, N Log N, because if the tree is imbalanced, it'll have an early termination. If the tree is skewed it would return False very fast, so worst case is actually when the tree is balanced !
@parthsalat
@parthsalat 2 жыл бұрын
💯💯💯
@only_for_fun1234r
@only_for_fun1234r Жыл бұрын
I didn't understand why very fast , its has to travel the complete height of left skew which will be (N) because we are traversing from root
@beingSenpai
@beingSenpai Жыл бұрын
what if the N = 10^8 and node left contains 10^8 -1 nodes and another one node at right side then we go through all the nodes on left side at last termination we come to know that its right after the root node is imblanced then it would taken almost O(N)
@kennethantonyjohn2708
@kennethantonyjohn2708 2 жыл бұрын
Thanks a lot for the explanation, it was very helpful. One further optimization that could be done is to check if lh and rh values right after each recursive call lh = check(node -> left) if lh == -1: return -1 rh = check(node -> right) if rh == -1: return -1 In this case we are not computing the right sub-tree if at all, at any point the left tree breaks the condition
@chiragvohra6673
@chiragvohra6673 2 жыл бұрын
how lh value will be -1 can u explain ?
@VV-ps8rt
@VV-ps8rt 2 жыл бұрын
@@chiragvohra6673 if at any node in left subtree is not balanced, ultimately will result in unbalanced left subtree
@tamannasharma3524
@tamannasharma3524 3 ай бұрын
Really good explanation and the best part is converting the solution of calculating height to find if the tree is balanced is super..
@saicharangarapati2517
@saicharangarapati2517 Жыл бұрын
Thank You Striver❣ By seeing 50% video I got the logic and I made it
@prakharmangal1152
@prakharmangal1152 3 жыл бұрын
Python Solution: class Solution: def isBalanced(self, root: Optional[TreeNode]) -> bool: def check(node): if node == None: return 0 lh = check(node.left) rh = check(node.right) if lh == -1 or rh == -1 or abs(lh-rh) > 1: return -1 return 1 + max(lh, rh) return check(root) != -1
@VV-ps8rt
@VV-ps8rt 2 жыл бұрын
after calculating lh, you can immediately check if its -1 and return, will save lot of time especially if its right leaning tree
@adamyasharma_0135
@adamyasharma_0135 Жыл бұрын
such a simple and easy to understand approach ,amazing
@SagarSrikant
@SagarSrikant Ай бұрын
Big Thank You to Striver. Leveraging the solution from previous video in this playlist. Below is the alternative approach:- /* Algorithm for the main function, isBalanced(root): - Declare and Initialize leftHeight to the return value of the helper function, getMaxDepth(root.left) - Declare and Initialize rightHeight to the return value of the helper function, getMaxDepth(root.right) - If the absolute difference between the leftHeight and rightHeight is greater than 1, return false. - If the left side of the subtree is NOT balanced OR right side of the subtree is NOT balanced, return false. - Return true. Complexity Analysis: - Time Complexity = O(N) - Space Complexity = O(N) Algorithm for the helper function, getMaxDepth(root): - Base case condition - If root is equal to null, return 0. - Main/Recursive case condition - If the root is not equal to null, then the maxDepth will be `1 + max(maxDepth(left of root), maxDepth(right of root)). Return the maxDepth. */ var isBalanced = function(root) { // Edge case if (root === null) { return true; } let leftHeight = getMaxDepth(root.left); //console.log(leftHeight); let rightHeight = getMaxDepth(root.right); //console.log(rightHeight); let diff = Math.abs(leftHeight - rightHeight); //console.log(diff); if (diff > 1) { return false; } if (!isBalanced(root.left) || !isBalanced(root.right)) { return false; } return true; }; var getMaxDepth = function(root) { // Base case condition if (root === null) { return 0; } // Recursive case condition return 1 + Math.max(getMaxDepth(root.left), getMaxDepth(root.right)); };
@PabitraPadhy
@PabitraPadhy 3 жыл бұрын
If you follow the mycodeschool approach, where height of a null node is -1, then replace the exit condition from return 0 to return -1. also, replace all the -1 in the code to some flag value say, -2 or something in the negative side other than -1. you could also declare that flag as a static const inside the function. If this is done, then if it's balanced, you'll get directly the height of the node passed initially. Assuming, you're following height of a node, is the # of edges from from leaf to that node, in that branch.
@ruchivora1190
@ruchivora1190 3 жыл бұрын
I struggled to understand the O(N^2) approach, but you made it so simple. Thank You!
@arishsheikh3000
@arishsheikh3000 2 жыл бұрын
Work on recursion more
@ayushkumar-wt2wm
@ayushkumar-wt2wm 3 жыл бұрын
class Solution { public: bool res=true; int height_of_tree(TreeNode *root) { if(root==NULL) { return 0; } int left=height_of_tree(root->left); int right=height_of_tree(root->right); if(abs(left-right)>1) res=false; return max(left,right)+1; } bool isBalanced(TreeNode* root) { height_of_tree(root); return res; } };
@yashmundankar24
@yashmundankar24 2 жыл бұрын
Did the same thing. class Solution { public: int func(TreeNode* root,bool &b){ if(root==NULL){ return 0; } int lh=func(root->left,b); int rh=func(root->right,b); if(abs(lh-rh)>1) b=false; return 1+max(rh,lh); } bool isBalanced(TreeNode* root) { if(root==NULL) return true; bool b=true; func(root,b); return b; } };
@ishangujarathi10
@ishangujarathi10 Жыл бұрын
AMazing intuition, understood completely through dry run
@utsavseth6573
@utsavseth6573 Жыл бұрын
Me solving a question on my own by some magic once in a bluemoon. Le striver: So the naive approach is.....turns out to be my approach..... I am like ...damn, this guy.... 😂😂😂😂😂.
@stith_pragya
@stith_pragya Жыл бұрын
Thank You So Much for this wonderful video...............🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻
@kakadiazeel
@kakadiazeel 3 жыл бұрын
class Solution { boolean isBal=true; public boolean isBalanced(TreeNode root) { helper(root); return isBal; } public int helper(TreeNode root){ if(root==null) return 0; int left = helper(root.left); int right = helper(root.right); int gap = Math.abs(left-right); if(gap>1) isBal=false; int height = Math.max(left,right)+1; return height; } }
@CuriousAyushi
@CuriousAyushi 4 ай бұрын
What an Explanation MANNN!!!!!!!!!!!!!!! 💫💯
@akashddeepchitransh4537
@akashddeepchitransh4537 Ай бұрын
Amazing explanation. You are an inspiration.
@engineervinay
@engineervinay Жыл бұрын
i decided to solve this problem on my own first and after solving thought that i should see the optimized approach and when i started watching i realized my solution is exactly same as striver's this was my solution: int getheight(TreeNode* root){ if(root==NULL)return 0; int lh=getheight(root->left); int rh=getheight(root->right); if(lh==-1||rh==-1)return -1; if(abs(lh-rh)>1)return -1; return 1+max(lh,rh); } bool isBalanced(TreeNode* root) { if(getheight(root)==-1)return false; return true; } i don't know how i got this solution and first time so surprised that i got exact same solution as him i saw the previous problems solution so i knew we just have to make changes in that code.
@ritikshandilya7075
@ritikshandilya7075 7 ай бұрын
Thankyou so much Striver ,you are the best
@vasudhajha9115
@vasudhajha9115 2 жыл бұрын
Another wonderful explanation + solution! Thank you for demystifying trees!
@bhavkushwaha
@bhavkushwaha 8 ай бұрын
Thankyou Striver, Understood!
@viditsrivastava1747
@viditsrivastava1747 4 ай бұрын
Out of the box solution!🤯
@sankalpjain4841
@sankalpjain4841 3 жыл бұрын
It should also find the right height of node 1 right? We need to visit the right subtree of node 1 also right? At 11.46 we returned -1 directly after we got lh==-1 before we got the rh.
@anujaditya02
@anujaditya02 3 жыл бұрын
As said by striver, even if we encounter -1 on the left side we are gonna return -1 as we are explicitly specifying that if left return -1 then the whole function return -1.
@_nucleus
@_nucleus 2 жыл бұрын
Yes I am also confused for the same, if(lh == -1 || rh == -1) return -1; This above statement can only run after, rh = check(node->right); And since in function call we will pass the root, how rh = check(node->right); this can be skipped, it will check for right child of root but both the codes on 12:00 is right because there he is checking before making call to right
@rishabhnegi9806
@rishabhnegi9806 2 жыл бұрын
@@_nucleus yeah u are right ... even if we have lh as -1, the recursion will still chk for right tree as before calling for root->right we aren't checking whether we got any -1 till this point ... so in my opinion we can just chk if( lh==-1 ) before calling for rh .
@prakhar_pratyush
@prakhar_pratyush 2 жыл бұрын
@@rishabhnegi9806 yes I submitted both the approaches on leetcode. Putting lh==-1 before calling for rh, reduces the runtime by half.
@CodePinaka
@CodePinaka 2 жыл бұрын
was looking for the same doubt in the comment section.... thanks vro
@AmanYadav-jf1yy
@AmanYadav-jf1yy Жыл бұрын
Using Ninja technique 😍😅😅 take an extra variable ans, initially set ans=true and pass this variable to the btHeight(fxn to calculate height of binary tree) function by reference. If in function btHeight, abs(lh-rh)>1 is true then set ans=false. bool isBalanced(TreeNode* root) { if(root==nullptr) return true; bool ans=true; btHeight(root,ans); return ans; } int btHeight(TreeNode* root, bool &ans) { if(root==nullptr) return 0; int lh=btHeight(root->left, ans); int rh=(root->right, ans); if(abs(lh-rh)>1) ans=false; return 1+max(lh,rh); }
@pulkitjain5159
@pulkitjain5159 Жыл бұрын
yup , i did it too , but your code is still doing extra calculations ,just do a return when left or right has a false and at end you will find that your logic and striver's logic are same
@udayptp
@udayptp Жыл бұрын
Noice
@subhajitdey135
@subhajitdey135 4 ай бұрын
We can use the brute force code with memoization also : unordered_map st; int height(TreeNode* node) { if (!node) return 0; if(st.find(node)!=st.end()) return st[node]; int l = height(node->left); int r = height(node->right); return st[node]=1 + max(l, r); } bool isBalanced(TreeNode* root) { if (!root) return true; int l=height(root->left); int r=height(root->right); if (abs(l - r) > 1) return false; bool check1 = isBalanced(root->left); bool check2 = isBalanced(root->right); if (!check1 || !check2) return false; return true; }
@muktarsayeed9198
@muktarsayeed9198 Жыл бұрын
Good explanation. Walking through the diagram with the code is particularly useful 👍👍👍
@apmotivationakashparmar722
@apmotivationakashparmar722 2 ай бұрын
Thank you So much Striver !
@PrashantSingh-qr3vn
@PrashantSingh-qr3vn 10 ай бұрын
I have a doubt why a person of your caliber is working for some MNC when he can easily build some million dollar business since you are the person who can get things done
@DrOnZeR2022
@DrOnZeR2022 5 ай бұрын
Striver does not want to sell paid courser he wants to help students in this way and I think striver loves his profession that's why he is not building his bussines
@mysterious5729
@mysterious5729 4 ай бұрын
​@@DrOnZeR2022 surprise! Course launched ✨
@DrOnZeR2022
@DrOnZeR2022 4 ай бұрын
@@mysterious5729 🤣🤣 this thing he said 2 year before in a vedio
@lifehustlers164
@lifehustlers164 Жыл бұрын
Completed 16/54 (29% done) !!!
@nagame859
@nagame859 Жыл бұрын
Understood! By the way... the comments section of your videos is quite good👍. Want to say this since a very long time..
@uRamPlus
@uRamPlus 3 жыл бұрын
this channel is a hidden gem 💎! thank you
@rohandevaki4349
@rohandevaki4349 2 жыл бұрын
at 1:23 , it is abs( height(left) - height(right))
@omkumar4211
@omkumar4211 Жыл бұрын
Yaa that's correct, that's the required condition for a balanced 🌲
@himanshugupta7010
@himanshugupta7010 2 жыл бұрын
Thanks Striver for such an amazing explanation . never ever thought this question like this . you completely changed my thought process. 🙌
@yashpaunikar671
@yashpaunikar671 9 ай бұрын
loved it...!!!🤩🤩
@deepakjain4481
@deepakjain4481 Жыл бұрын
maybe someday i will be called as a genius despite of my horrible failures i will try i will keep going someday i will compete with my dream
@TheWierdVibe
@TheWierdVibe 2 жыл бұрын
Everything becomes easy when it's striver!
@ganeshjaggineni4097
@ganeshjaggineni4097 5 ай бұрын
NICE SUPER EXCELLENT MOTIVATED
@noob_coder4017
@noob_coder4017 5 ай бұрын
Tq striver❤for this wonderful playlist
@krishnakanttiwari517
@krishnakanttiwari517 Күн бұрын
Thank you so much sir!
@codeman3828
@codeman3828 9 ай бұрын
Great eexplanation
@firebout7675
@firebout7675 11 ай бұрын
bit manipulation playlist pls....thanks for this wonderful video
@itzmartin20
@itzmartin20 Жыл бұрын
love your dedication! understood sir!
@adebisisheriff159
@adebisisheriff159 11 ай бұрын
Thanks alot Striver!!!
@shameemahamad2617
@shameemahamad2617 Жыл бұрын
Very nice series to under all types of scenarios what can come across from binary tree.
@ajaykushwaha6137
@ajaykushwaha6137 3 жыл бұрын
Hey Buddy, thanks for such an awesome Video, but can u give an example of when the case will be lh==-1 or rh==-1? I couldn't understand.
@HimanshuSingh-zu4ht
@HimanshuSingh-zu4ht 3 жыл бұрын
just happen in the same video example brother lh become -1 after if(abs(lh-rh)>1) return -1 now again when come to the check fuction here lh =-1 and if(lh==-1or rh==-1) return -1 and then we come out of check function with -1
@amanbhadani8840
@amanbhadani8840 2 жыл бұрын
Just do the dry run once on copy,u will understand better.
@devanshrai8972
@devanshrai8972 Жыл бұрын
my approach:: int recur(TreeNode* root, int* ans) { if(root==NULL) return 0; int l = recur(root->left,ans); int r = recur(root->right,ans); if(abs(l-r)>1) *ans=0; return max(l,r)+1; } bool isBalanced(TreeNode* root) { int ans = 1; recur(root,&ans); if(ans==0) return false; else return true; }
@rohandevaki4349
@rohandevaki4349 2 жыл бұрын
at 4:47 , why did you multiply the time complexities of left and right? why dont we add them?
@nawabkhan4916
@nawabkhan4916 3 жыл бұрын
great work, and have lots of sponsor ad so that you can provide great videos.
@gangsta_coder_12
@gangsta_coder_12 3 жыл бұрын
Excellent explanation as always 🔥🔥🔥🔥👌👌👌👌
@annaswaheed2615
@annaswaheed2615 2 жыл бұрын
best explanation so far 💯!!!
@cinime
@cinime 2 жыл бұрын
Understood! Such a smart explanation as always, thank you very much!!
@Anand-zg6jv
@Anand-zg6jv 2 жыл бұрын
thanxx . i was stuck at this question for last two days ...♥
@subramanir8438
@subramanir8438 6 ай бұрын
10:18 here why is it fine if lh-rh is equal to 1. Still it's an unbalanced tree right. Wondering why greater than 1 is taken instead of greater than or equal to 1
@deepanshurohilla2114
@deepanshurohilla2114 Жыл бұрын
Bhaiya at 11:02 I don't think so that -1 will be returned earlier before visiting the right portion. right recursive calls will be done before returning -1 as answer Please correct em if i am wrong
@deepanshurohilla2114
@deepanshurohilla2114 Жыл бұрын
sorry my bad i wrote this comment only based on the pseudo code at 11:15 its fine now 😂😂😂😂
@shivam4you744
@shivam4you744 3 жыл бұрын
I understood the code and entire explanation : ) 🔥🔥🔥🔥👌👌👌👌
@tushar5359
@tushar5359 Жыл бұрын
Thanks Striver!, I learnt a lot from you!
@niranjanraje7160
@niranjanraje7160 3 жыл бұрын
In the first approach, we keep checking for each and every node if its left subtree and right subtree height
@rajkrishnan9961
@rajkrishnan9961 3 жыл бұрын
yes
@akashverma5756
@akashverma5756 5 ай бұрын
I call this method of solving Recursion Exploitation. We design recursion for different purpose but exploit every recursive call separately to find our answer.
@theankurpathak
@theankurpathak 2 жыл бұрын
I didn't get o n square solution. Once u have checked difference of left and right child for root, why are u repeating it for subtrees. Is it possible that tree is balanced but subtrees are not balanced.
@yashmundankar24
@yashmundankar24 2 жыл бұрын
If a subtree is unbalanced then it will ultimately lead to making the whole tree unbalanced.
@abhishekverma332
@abhishekverma332 3 жыл бұрын
Actually, while submitting on Leetcode the latter solution (approach 2) is faster than 64.02% of C++ online submissions although being O(n) whereas the earlier is faster than 90.42% of C++ submission though it being O(n^2). I am actually not getting this, or I am missing anything. Kindly help!
@parthapratimghose173
@parthapratimghose173 3 жыл бұрын
i submitted by myself something si,miliar to the 2nd i got 99% best 4ms solution some extra recursion you have used ?
@Usurperhk
@Usurperhk 3 жыл бұрын
Leetcode's runtime is a scam. Focus on the time complexity of code you write.
@KrishnaSharma-bv5ys
@KrishnaSharma-bv5ys 2 жыл бұрын
Please show the code of 1st approach
@matrixtoogood5601
@matrixtoogood5601 2 жыл бұрын
Leetcode test cases might not be of very big trees with billions of nodes. In smaller examples, time complexity will not explain the running/execution time accurately since asymptotic analysis assumes almost infinitely large sizes. For smaller test cases, execution time will depend on network latency, CPU thread switching etc. which is pretty non-deterministic
@tanishqdadhich8589
@tanishqdadhich8589 2 жыл бұрын
@@matrixtoogood5601 Sounds like avalid point!
@Nikita-hv5jm
@Nikita-hv5jm 2 жыл бұрын
thaks a lot for such a great explanation !!
@KeepCalm__
@KeepCalm__ Жыл бұрын
@10:26 correction: height of the tree is 1when stand at 3
@Aditya-wy4ci
@Aditya-wy4ci 2 ай бұрын
But for node 1,recursive call will be made for right subtree and then it will return -1
@thatowlfromhogwarts490
@thatowlfromhogwarts490 2 жыл бұрын
int is_balanced(Node root) { if(root == NULL) return 0; int lh = is_balanced(root->l); if(lh == -1) return -1; int rh = is_balanced(root->r); if(rh == -1) return -1; if(abs(lh-rh)>1) return -1; return 1+max(lh, rh); }
@pratyakshhhhhhhhhhhhhhhhhhhhh
@pratyakshhhhhhhhhhhhhhhhhhhhh Жыл бұрын
Yeahhh❤❤❤
@lsdxsaurabh2798
@lsdxsaurabh2798 2 жыл бұрын
IN find height function base condition should return -1 . otherwise function will return height + 1 .
@rhl_
@rhl_ 2 жыл бұрын
There exist variety of definiton of height and depth of a tree. Some count nodes while some count egdes depends on the problemsetter. In this case it was mentioned in the question what height here is meant. good day :)
@jasonbrody4618
@jasonbrody4618 3 жыл бұрын
Liked. Cfbr will watch after some time
@stith_pragya
@stith_pragya Жыл бұрын
Ye dekh k bohot acha lgta h jb you come on to some video of a pro coder to check for a better solution than yours and you find it exactly the same..........🙂
@dakshchandore6435
@dakshchandore6435 4 ай бұрын
how can the height be -1 since the height can either be zero or >zero and i didn't understand this line if(leftHieght == -1 ) return -1 and if (rightHeight == -1 ) return -1 ;
@animeshsrivastava9938
@animeshsrivastava9938 3 жыл бұрын
class Solution { public boolean isBalanced(TreeNode root) { return height(root) != -1; } int height (TreeNode root) { if (root == null) return 0; int leftH = height(root.left), rightH = height(root.right); if ((rightH == -1) || ((leftH == -1)) || (Math.abs(leftH - rightH) > 1)) return -1; else return Math.max(leftH, rightH) + 1; } }
@gigglezone3432
@gigglezone3432 Жыл бұрын
Can we instead have a global variable, flag and if at any moment left-right subtree height not
@studyonly9622
@studyonly9622 5 ай бұрын
I think you missed the root->right tree steps. or put that condition right after lh=check(node->left)
@KartikeyTT
@KartikeyTT 5 ай бұрын
tysm sir
@sauravchandra10
@sauravchandra10 Жыл бұрын
Mazedaar approach
@adityapandey23
@adityapandey23 3 ай бұрын
Understood
@saikirank6357
@saikirank6357 Жыл бұрын
In what case either left height or right height is equal to -1?
@omkumar4211
@omkumar4211 Жыл бұрын
Same qn
@taqimustafa7665
@taqimustafa7665 9 ай бұрын
when either of the subtree would be unbalanced,the previous function call would have returned -1 to them,so if unbalancing is found,we dont need to check further
@eshanchourasia287
@eshanchourasia287 3 жыл бұрын
Bhaiya ek Sara imp algorithm ka bhi video bna dona pls .aapka hi smgh aata hai adat lk gya hai😁
@stark2461
@stark2461 Жыл бұрын
This code won't work when tree is left skewed or right skewed. change return 0 to -1 when root == NULL and change others as -2
@tanveer.shaikh
@tanveer.shaikh 2 жыл бұрын
instead of using we can use boolean array like you did in diameter
@rahulsbhatt
@rahulsbhatt Жыл бұрын
Such an excellent video! Thanks, Striver Bhai!
@subhajitdey135
@subhajitdey135 4 ай бұрын
How is the time complexity of the brute force solution O(n*n) and not O(2*n). Dont the recursion calls of the findH finishes first and then for the function check() starts ? I know that this recursion has overlapping sub problems. But why is the time complexity O(n*n) for the overall brute force
@Sakthivel-zq1hb
@Sakthivel-zq1hb 3 ай бұрын
I have a doubt Striver Sir, [1,2,3,4,5,6,null,8] -- this is balanced based on the formula ((lh - rh)
@utkarsh_108
@utkarsh_108 2 жыл бұрын
IDK why but your brute force approach is giving WA for other TCs on Leetcode
@harshkumargupta8538
@harshkumargupta8538 Жыл бұрын
why the recursion stopped the moment when the left call of 1 node gave -1 the right call must be executed n for 1 node...
@thegamegoing4320
@thegamegoing4320 5 ай бұрын
Same doubt
@harshkumargupta8538
@harshkumargupta8538 3 ай бұрын
@@thegamegoing4320 we can put a check after calculating lh that if it is -1 then return -1.
@nuraynasirzade
@nuraynasirzade Жыл бұрын
good !
@codding32world50
@codding32world50 2 жыл бұрын
Thank You Striver:)))))))))))))))))))))))))))))))
@Shivi32590
@Shivi32590 5 ай бұрын
thank you
@depressedguy3566
@depressedguy3566 3 жыл бұрын
it's awesome that you are not uploading all videos in a bulk, in a staggered manner we can complete the course according to your uploads, btw great content
@manavshah7450
@manavshah7450 3 жыл бұрын
I disagree with you... He was buzy making the Tree series and didn't upload for a month and now we expected to get the whole series but he is uploading slowly. Placements are going on and it would be beneficial for final year students if he uploads the whole series together.
@depressedguy3566
@depressedguy3566 3 жыл бұрын
@@manavshah7450 it's okay to disagree and I respect your opinion, but I personally find it more helpful than bulk upload, it's just a personal POV
@manavshah7450
@manavshah7450 3 жыл бұрын
@@depressedguy3566 alright. Technically speaking it shouldn't matter to you even if the whole series gets uploaded together. After all you can watch it at your own convenience and pace at youtube.
@AnkitKumar-jm3cz
@AnkitKumar-jm3cz 2 жыл бұрын
loved your optimised approach bhaiya
@akashjha7090
@akashjha7090 3 жыл бұрын
are bhaiya we are checking condition lh==-1 and another one rh==-1 i am confused when lh and rh may be -1
@codingwithanonymous890
@codingwithanonymous890 3 жыл бұрын
same dude
@sourabhchoudhary7289
@sourabhchoudhary7289 3 жыл бұрын
I have completed tree but gonna watch again 🤘
@fuehrercheem
@fuehrercheem 3 жыл бұрын
No one asked
@sourabhchoudhary7289
@sourabhchoudhary7289 3 жыл бұрын
@@fuehrercheem you could have simply ignored this comment but no toxicity is necessary...
@fuehrercheem
@fuehrercheem 3 жыл бұрын
@@sourabhchoudhary7289 mentioning and then saying u can ignore this wtf
@sourabhchoudhary7289
@sourabhchoudhary7289 3 жыл бұрын
@@fuehrercheem by that comment I meant that I love his content so gonna watch again It was not commented because someone asked or not
@democratcobra
@democratcobra 3 жыл бұрын
film hein keya??
@surbhiranjan7808
@surbhiranjan7808 3 жыл бұрын
When does this condition occur? if (rightHeight == -1) return -1; if (leftHeight == -1) return -1;
@praveenrajs94
@praveenrajs94 3 жыл бұрын
the line lh = check(root->left) means that check whether the left subtree is balanced or not, and if that function returns -1 (which is stored in the lh variable), it means that the left subtree is not balanced. same is the condition with right subtree, if either of them turn out to be unbalanced then the entire tree is unbalanced.
@lakshsinghania
@lakshsinghania Жыл бұрын
@@praveenrajs94 thnks for the explanation! i was looking for the same only
@piyushverma8207
@piyushverma8207 3 жыл бұрын
Can someone tell me why this code doesn't work? On my local machine it gives the right output but on leetcode it fails. int ans=0; int diff(TreeNode* root){ if(root==NULL){ ans = max(ans,0); return 0; } int left = diff(root->left); int right = diff(root->right); int height = 1 + max(left,right); ans = max(ans, abs(right-left)); return height; } class Solution { public: bool isBalanced(TreeNode* root) { if(root==NULL) return true; int height = diff(root); if(ans>1) return false; return true; } };
@ankitpradhan2499
@ankitpradhan2499 2 ай бұрын
i cant figure out how to write the leftH and rightH functions in the brute force...
@ayushmishra1207
@ayushmishra1207 2 жыл бұрын
Bhaiya In which case the height of left or right side will -1 ??
@pranavmendiratta3166
@pranavmendiratta3166 Жыл бұрын
Amazing series, keep going!
@rishabhkesarwani5761
@rishabhkesarwani5761 3 жыл бұрын
One more Solution using the pair that contains both height and isBalance . T.C. -> O(N) class Solution { class pair{ int height; boolean isbal; pair(int height,boolean isbal){ this.height=height; this.isbal=isbal; } pair(){}; } public boolean isBalanced(TreeNode root) { pair ans = isBalanceHelper(root); return ans.isbal; } public pair isBalanceHelper(TreeNode root){ if(root==null){ pair ans=new pair(0,true); return ans; } pair left=isBalanceHelper(root.left); pair right=isBalanceHelper(root.right); pair ans=new pair(); ans.height=1+Math.max(left.height,right.height); ans.isbal=true; if(!left.isbal||!right.isbal){ ans.isbal=false; } if(Math.abs(left.height-right.height)>1){ ans.isbal=false; } return ans; } }
L16. Diameter of Binary Tree | C++ | Java
13:47
take U forward
Рет қаралды 390 М.
How I would learn Leetcode if I could start over
18:03
NeetCodeIO
Рет қаралды 741 М.
Маусымашар-2023 / Гала-концерт / АТУ қоштасу
1:27:35
Jaidarman OFFICIAL / JCI
Рет қаралды 390 М.
Andro, ELMAN, TONI, MONA - Зари (Official Audio)
2:53
RAAVA MUSIC
Рет қаралды 8 МЛН
Top 7 Algorithms for Coding Interviews Explained SIMPLY
21:22
Codebagel
Рет қаралды 462 М.
The Dome Paradox: A Loophole in Newton's Laws
22:59
Up and Atom
Рет қаралды 1,1 МЛН
L14. Maximum Depth in Binary Tree | Height of Binary Tree | C++ | Java
8:05
10.1 AVL Tree - Insertion and Rotations
43:08
Abdul Bari
Рет қаралды 1,3 МЛН
What is mathematical thinking actually like?
9:44
Benjamin Keep, PhD, JD
Рет қаралды 24 М.
L17. Maximum Path Sum in Binary Tree | C++ | Java
17:50
take U forward
Рет қаралды 373 М.
Dependency Injection, The Best Pattern
13:16
CodeAesthetic
Рет қаралды 903 М.
3 Types of Algorithms Every Programmer Needs to Know
13:12
ForrestKnight
Рет қаралды 513 М.
Маусымашар-2023 / Гала-концерт / АТУ қоштасу
1:27:35
Jaidarman OFFICIAL / JCI
Рет қаралды 390 М.