• 110. 平衡二叉树



    方法一:自底向上

    class Solution(object):
        # 法一:自底向上
        def isBalanced(self, root):
            """
            :type root: TreeNode
            :rtype: bool
            """
            return self.helper(root) >= 0
    
        def helper(self, root):
            if not root:
                return 0
            left = self.helper(root.left)
            right = self.helper(root.right)
            if left == -1 or right == -1 or abs(left - right) > 1:
                return -1
            return max(left, right) + 1
    

    方法二:自顶向下

    class Solution(object):
        # 法二:自顶向下
        def isBalanced(self, root):
            """
            :type root: TreeNode
            :rtype: bool
            """
            if not root:
                return True
    
            # 左、右子树深度
            heightLeft = self.treeDepth(root.left)
            heightRight = self.treeDepth(root.right)
            # 判断左、右子树是否平衡
            resultLeft = self.isBalanced(root.left)
            resultRight = self.isBalanced(root.right)
    
            # 左子树和右子树都是AVL,并且高度相差不大于1,返回真
            if resultLeft and resultRight and abs(heightLeft - heightRight) <= 1:
                return True
            else:
                return False
    
        # 求二叉树的深度
        def treeDepth(self, root):
            if not root:
                return 0
            depthLeft = self.treeDepth(root.left)
            depthRight = self.treeDepth(root.right)
            return depthLeft + 1 if depthLeft > depthRight else depthRight + 1
    
  • 相关阅读:
    简明python_Day2_字典、集合、模块、类、编程习惯
    测试2T2
    测试2T1
    bzoj2761
    一元三次方程求根公式及韦达定理
    状压DP入门——铺砖块
    高精度模板
    测试1T3
    测试1T2
    测试1T1
  • 原文地址:https://www.cnblogs.com/panweiwei/p/13585685.html
Copyright © 2020-2023  润新知