问题描述:
给定一个二叉树,判断它是否为平衡二叉树。
问题分析:
对当前节点分别求左右子树的深度,判断左右子树的高度差是否小于等于1.
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution{
public:
bool isBalanced(TreeNode* root)
{
if(!root) return true;
int d = abs(depth(root->left)-depth(root->right));
return (d<=1)&&(isBalanced(root->left))&&(isBalanced(root->right));
}
int depth(TreeNode* node)
{
if(node == nullptr) return 0;
return max(depth(node->left), depth(node->right))+1;
}
};