美文网首页
26平衡二叉树

26平衡二叉树

作者: Jachin111 | 来源:发表于2020-08-10 12:45 被阅读0次

    给定一个二叉树,判断它是否是高度平衡的二叉树。
    本题中,一棵高度平衡二叉树定义为:
    一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

    示例 1:
    给定二叉树 [3,9,20,null,null,15,7]
      3
      / \
    9   20
          / \
        15 7
    返回 true 。

    示例 2:
    给定二叉树 [1,2,2,3,3,null,null,4,4]

          1
          / \
        2  2
        / \
      3   3
      / \
    4   4
    返回 false 。

    从底至顶(提前阻断)

    class Solution:
        def isBalanced(self, root: TreeNode) -> bool:
            return self.recur(root) != -1
    
        def recur(self, root):
            if not root: return 0
            left = self.recur(root.left)
            if left == -1: return -1
            right = self.recur(root.right)
            if right == -1: return -1
            return max(left, right) + 1 if abs(left - right) < 2 else -1
    

    从顶至底(暴力法)

    class Solution:
        def isBalanced(self, root: TreeNode) -> bool:
            if not root: return True
            return abs(self.depth(root.left) - self.depth(root.right)) <= 1 and \
                self.isBalanced(root.left) and self.isBalanced(root.right)
    
        def depth(self, root):
            if not root: return 0
            return max(self.depth(root.left), self.depth(root.right)) + 1
    

    来源:力扣(LeetCode)

    相关文章

      网友评论

          本文标题:26平衡二叉树

          本文链接:https://www.haomeiwen.com/subject/bzvvrktx.html