leetcode

Leetcode Solutions (0x6A73)
git clone https://git.pngu.org/leetcode
Log | Files | Refs | Submodules | README

balanced_binary_tree.py (807B)


# 110. Balanced Binary Tree
import leetcode

"""
given a binary tree, determine if it is height balanced
"""


class Solution(object):
    def isBalanced(self, root):
        """
        :type root: Optional[TreeNode]
        :rtype: bool
        """
        self.balanced = True

        def dfs(node):
            if not node:
                return 0
            l, r = dfs(node.left), dfs(node.right)
            if abs(l - r) > 1:
                self.balanced = False
            return max(l, r) + 1

        dfs(root)
        return self.balanced


if __name__ == "__main__":
    obj = Solution()
    r1 = leetcode.treenode_build(vals=[3, 9, 20, None, None, 15, 7])
    r2 = leetcode.treenode_build(vals=[1, 2, 2, 3, 3, None, None, 4, 4])
    print(obj.isBalanced(r1))
    print(obj.isBalanced(r2))