我们知道,平衡二叉树要求二叉树的左右子树的深度差不超过1,即可以取值为{-1,0,1},同时,空树也为平衡二叉树,知道了这些,我们可以方便的进行平衡二叉树的判定,实现代码如下:
即定义一个求树的深度的一个函数,我们使用递归进行定义,然后我们定义判定树是否为平衡二叉树的函数,同样使用递归定义,因为平衡二叉树的左右子树一定为平衡二叉树!
class Solution {
public:
bool isBalanced(TreeNode *root) {
if(!root) return true;
else return (abs(depth(root->left)-depth(root->right))<2)&&isBalanced(root->left)&&isBalanced(root->right);
}
int depth(TreeNode* root){
if(!root) return 0;
if(!root->left&&!root->right) return 1;
int left=depth(root->left)+1;
int right=depth(root->right)+1;
return max(left,right);
}
};