Balanced Binary Tree

Este problema consiste en regresar un booleano que describe si un árbol binario está balanceado, es decir si la diferencia entre todas sus hojas no es mayor que 1

Solución

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def isBalanced(self, root):
        """
        :type root: Optional[TreeNode]
        :rtype: bool
        """
        self.res = True
        def transver(root):
            v = None
            y = None
            if root is None or not self.res:
                return 0

            v = transver(root.left)
            y = transver(root.right)

            
            if abs(v-y) >1:
                    self.res = False
            return max(v,y)+1
                
        transver(root)
        return self.res

Esta solución es DFS, es decir primero busca el nodo más profundo y luego regresa su nivel de profundidad, y la compara con la profundidad de los otros nodos