lintcode练习 - 93. 平衡二叉树

版权声明:原创部分都是自己总结的,如果转载请指明出处。觉得有帮助的老铁,请双击666! https://blog.csdn.net/qq_36387683/article/details/82532578

93. 平衡二叉树

给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 

样例

给出二叉树 A={3,9,20,#,#,15,7}, B={3,#,20,15,7}

A)  3            B)    3 
   / \                  \
  9  20                 20
    /  \                / \
   15   7              15  7

二叉树A是高度平衡的二叉树,但是B不是

"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left, self.right = None, None
"""

class Solution:
    """
    @param root: The root of binary tree.
    @return: True if this Binary tree is Balanced, or false.
    """
    def isBalanced(self, root):
        # write your code here
        isBalanced_, _ = self.dfs(root)
        return isBalanced_
        
    def dfs(self, root):
        if root is None:
            return True, 0

        isleftBalanced, leftH = self.dfs(root.left)
        isrightBalanced, rightH = self.dfs(root.right)
        
        if not isleftBalanced or not isrightBalanced:
            return False, 0
        
        return abs(leftH - rightH) <= 1, max(leftH, rightH) + 1

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/82532578
今日推荐