平衡二叉树
力扣题目链接
题目描述
给定一个二叉树,判断它是否是 平衡二叉树 。
解题思路
把求二叉树最大深度的代码修改一下即可,在递归的时候判断两个子树的高度相差是否大于1,如果大于1就直接返回-1,说明该子树不平衡,如果两个子树中出现-1,也是直接返回,否则返回最大子树高度加1。
题解
class Solution {
public:
bool isBalanced(TreeNode* root) {
return func(root) == -1? false : true;
}
int func(TreeNode* root){
if(root == NULL){
return 0;
}
int n1 = func(root->left);
int n2 = func(root->right);
if(n1 == -1 || n2 == -1){
return -1;
}
return abs(n1 - n2) > 1 ? -1 : 1 + max(n1, n2);
}
};