Balanced Binary Tree Solutions in C++
Number 110
Difficulty Easy
Acceptance 43.6%
Link LeetCode
Solutions
C++ solution by haoel/leetcode
// Source : https://oj.leetcode.com/problems/balanced-binary-tree/// Author : Hao Chen// Date : 2014-06-28/*** Definition for binary tree* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/class Solution {public:bool isBalanced(TreeNode *root) {int height=0;return isBalancedUtil(root, height);}bool isBalancedUtil(TreeNode* root, int& height){if(root==NULL){height=0;return true;}int lh=0, rh=0;bool isLeft = isBalancedUtil(root->left, lh);bool isRight = isBalancedUtil(root->right, rh);height = (lh > rh ? lh : rh) + 1;return (abs(lh-rh)<=1 && isLeft && isRight);}};//Notes:// I think the above solution should be more efficent than the below,// but for leetcode, the below solution needs 60ms, the above needs 88msclass Solution {public:bool isBalanced(TreeNode *root) {if (root==NULL) return true;int left = treeDepth(root->left);int right = treeDepth(root->right);if (left-right>1 || left-right < -1) {return false;}return isBalanced(root->left) && isBalanced(root->right);}int treeDepth(TreeNode *root) {if (root==NULL){return 0;}int left=1, right=1;left += treeDepth(root->left);right += treeDepth(root->right);return left>right?left:right;}};
C++ solution by pezy/LeetCode
/*** Definition for binary tree* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/#include <complex>struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};class Solution {public:bool isBalanced(TreeNode *root) {height(root);return bBalanced;}private:int height(TreeNode *node){if (node == NULL || !bBalanced) return 0;else{int leftHeight = height(node->left);int rightHeight = height(node->right);if (std::abs(leftHeight - rightHeight) > 1) bBalanced = false;return std::max(leftHeight, rightHeight) + 1;}}bool bBalanced = true;};