题解 | JZ79 判断是不是平衡二叉树

由于要涉及到子树的高度,而单独递归IsBalanced_Solution()函数是无法涉及到子树高度的,所以需要拎出来子树高度作为一个单独的模块。

得出上面的结论的思考是:在构思IsBalanced_Solution()函数模块的时候,只用考虑当前层和其他层之间的关系,怎么串起来。而串起来的方法就是需要知道子树是否为平衡二叉树,以及当前层满不满足平衡二叉树的要求。而满足平衡二叉树的要求其中一条就是需要左右子树的最大高度差不超过1,因此需要把求子树高度的模块抽出来做一个单独的函数。

class Solution {
public:
    bool IsBalanced_Solution(TreeNode* pRoot) {
        if (!pRoot) return true;
        
        int left_height = get_height(pRoot->left);
        int right_height = get_height(pRoot->right);
        
        if (abs(left_height - right_height) <= 1)   
            return IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right);
        return false;
    }
    
    int get_height(TreeNode* root) {
        if (!root) return 0;
        if (!root->left && !root->right) return 1;
        return max(get_height(root->left), get_height(root->right)) + 1;
    }
};
}
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param pRoot TreeNode类 
# @return bool布尔型
#
class Solution:
    def IsBalanced_Solution(self , pRoot: TreeNode) -> bool:
        # write code here
        if not pRoot:
            return True
        
        left_height = self.get_height(pRoot.left)
        right_height = self.get_height(pRoot.right)
        
        if (abs(left_height - right_height) <= 1):
            return self.IsBalanced_Solution(pRoot.left) and self.IsBalanced_Solution(pRoot.right)
        return False
    
    def get_height(self, pRoot: TreeNode) -> int:
        if not pRoot:
            return 0
        if not pRoot.left and not pRoot.right:
            return 1
        
        return max(self.get_height(pRoot.left), self.get_height(pRoot.right)) + 1
全部评论

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
字节 飞书绩效团队 (n+2) * 15 + 1k * 12 + 1w
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务