110. Balanced Binary Tree

1.描述

Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

2.分析

先判断左子树和右子树是否为平衡,然后判断左右子树的高度差是否小于等于1。

3.代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
 
bool isChildBalanced(struct TreeNode* root, int* height) {
    if (NULL == root) {
        *height = 0;
        return true;
    }
    int leftHeight, rightHeight;
    bool left = isChildBalanced(root->left, &leftHeight);
    bool right = isChildBalanced(root->right, &rightHeight);
    *height = leftHeight >= rightHeight ? leftHeight + 1 : rightHeight + 1;
    bool balance = leftHeight >= rightHeight ? leftHeight - rightHeight <= 1 : rightHeight - leftHeight <=1;
    return balance & left & right;
}

bool isBalanced(struct TreeNode* root) {
    if (NULL == root) return true;
    int height;
    return isChildBalanced(root, &height);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容