Description:
Given a binary tree, determine if it is height-balanced.
Analysis:
二叉树先序遍历,先判断根节点的树是否是二叉平衡树,再判断以根节点左子树为根的二叉树是否是二叉平衡树,最后判断以根节点右子树为根的二叉树是否是二叉平衡树。
class Solution {
public:
bool isBalanced(TreeNode* root) {
if (root == nullptr)
return true;
int left = getHeight(root->left);
int right = getHeight(root->right);
if (left - right > 1 || right - left > 1)
return false;
return isBalanced(root->left) && isBalanced(root->right);
}
int getHeight(TreeNode* root) {
if (root == nullptr)
return 0;
int left = getHeight(root->left);
int right = getHeight(root->right);
if (left > right)
right = left;
return right + 1;
}
};