0
点赞
收藏
分享

微信扫一扫

算法练习——平衡二叉树 leetcode 110

伢赞 2022-04-26 阅读 53

题目描述:

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

参考解答:

Leetcode 110:平衡二叉树(最详细的解法!!!)_coordinate_blog的博客-CSDN博客_110. 平衡二叉树icon-default.png?t=M3K6https://blog.csdn.net/qq_17550379/article/details/82081501?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165098175116780366531503%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165098175116780366531503&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-82081501-null-null-2~all~sobaiduend~default-1-82081501.142^v9^control,157^v4^control&utm_term=%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91leetcode&spm=1018.2226.3001.4187

递归求解思路:

如果根节点为空,为平衡二叉树;

根节点非空,那么就要递归的判断它的左右子树的高度是否只相差一。

计算高度时需要函数height,与求树的深度思路相仿。

算法练习——二叉树的最大深度 leetcode.104 python_唐楚江之歌的博客-CSDN博客icon-default.png?t=M3K6https://blog.csdn.net/tangchujiang/article/details/124437025?spm=1001.2014.3001.5502代码实现:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
class Solution:
    def isBalanced(self, root):
        if not root:
            return True

        def height(node):
            if not node:
                return 1 # 只要返回值不是-1 都是一颗平衡二叉树
            len1 = height(node.left)
            len2 = height(node.right)
            if abs(len1-len2) > 1 or len1 == -1 or len2 == -1:
                return -1 # 如果已经不满足了 就将这棵树设为-1 避免重复运算
            return max(len1,len2)+1 # 计算高度

        return height(root) != -1
举报

相关推荐

0 条评论