每天一道Code 面试题 04.04. 检查平衡性

在这里插入图片描述
简单题
直接递归,通过子树的平衡性及高度得到当前节点的平衡性。
时间花费还是比较大,但是懒得再优化。
在这里插入图片描述

/**
 * 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:
    int height(TreeNode* root){
    
    
        //返回节点的高
        if(!root) return 0;
        if(!root->left && !root->right) return 1;
        return max(height(root->left),height(root->right))+1;
    }
    bool isBalanced(TreeNode* root) {
    
    
        //平衡检测
        if(!root) return true;
        return (isBalanced(root->left) && isBalanced(root->right) && abs(height(root->left)-height(root->right)) <= 1);             //左子树平衡,右子树平衡并且高度差不超过1
    }
};

猜你喜欢

转载自blog.csdn.net/qq_41746268/article/details/108201748
今日推荐