Determine if a binary tree is balanced
A balanced tree is defined to be a tree such that the heights of the two subtrees of any node never differ more than one.
Input : The root of a binary tree
Output : Boolean
Approach 1 :
Logic :
- For a given node we will get the height of its left and right sub tree
- If the height difference is greater than one then we will return false
- We will repeat this process for each of the node in the tree using recursion
This post is a follow-up of Create a binary search tree in javascript. I recommend reading that first, as the following code uses the method from it.
Time complexity : O (N logN)
Solution :
Approach 2 :
Logic :
- Minimize the number of calls to the getHeight function in the previous approach
- We can modify the getHeight function to check the current node is balanced or not
Time complexity : O (N)
Solution :
To learn more about recursion refer this article.
- CTCI_6_4.4