[leetcode] 110. Balanced Binary Tree

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.

解题思路:

本题求一个树是否是平衡树。可以采用深度优先遍历,计算树的高度,如果左右子树高度差超过1,则返回-1 .

class Solution {
public:
    int isBalancedHelper(TreeNode* root)
    {
        if(root == NULL) return 0;
        int leftHeight = isBalancedHelper(root->left);
        if(leftHeight == -1) return -1;
        
        int rightHeight = isBalancedHelper(root->right);
        if(rightHeight == -1) return -1;
        
        if(abs(leftHeight - rightHeight) > 1) return -1;
        return max(leftHeight,rightHeight) + 1;
    }
    bool isBalanced(TreeNode* root) {
        return isBalancedHelper(root) != -1;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容