// bottom up approach
    int dfsHeight(TreeNode* root){
    	if(!root) return 0;

    	int leftHeight = dfsHeight(root->left);
    	int rightHeight = dfsHeight(root->right);
    	if(leftHeight < 0 || rightHeight < 0 || abs(leftHeight - rightHeight) > 1)
    		return -1;
		else return max(leftHeight, rightHeight) + 1;
    }
 //dfs approach, bottom up
 int dfsHeight(TreeNode* root){
     if(!root) return 0;
     int left = dfsHeight(root->left);
     if(left==-1) return -1;
     int right = dfsHeight(root->right);
     if(right==-1) return -1;
     if(abs(left-right)>1) return -1;
     return max(left,right)+1;
 }
Exemple #3
0
 int dfsHeight(TreeNode *cur){
     if(cur == NULL){return 0;}
     int left = dfsHeight(cur -> left);
     if(left == -1){return -1;}
     int right = dfsHeight(cur -> right);
     if(right == -1){return -1;}
     
     if(abs(left - right) > 1){return -1;}
     return max(left, right) + 1;
 }
Exemple #4
0
 bool isBalanced(TreeNode *root) {
     return dfsHeight (root) != -1;
 }