LeetCode 110


質問する



マイソリューション

class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if not root:
            return 0
        return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1
        
    def isBalanced(self, root: TreeNode) -> bool:
        if not root:
            return True

        ldepth = self.maxDepth(root.left)
        rdepth = self.maxDepth(root.right)
        
        if abs(ldepth - rdepth) <= 1:
            return self.isBalanced(root.left) and self.isBalanced(root.right)
        return False
なぜこんなに解けたのか説明します
この卑怯なコードは2つの考えから出発した.
  • は、まず最大深さを要求する.だからmaxDepthと書きました
  • の左、右の深さの差を比較し、1より大きい場合は、isBanced関数を左、右の各再帰的に呼び出す.
  • しかし、2つの関数を作成するこのような卑怯なコードはruntimeが非常に遅い......