Practice Leetcode 110. 平衡二叉树

it2023-07-14  70

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过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 。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/balanced-binary-tree

思路1:自顶向下

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

思路2:自底向上

class Solution: def isBalanced(self, root: TreeNode) -> bool: def height(root: TreeNode) -> int: if not root: return 0 leftHeight = height(root.left) rightHeight = height(root.right) if abs(leftHeight-rightHeight) > 1 or leftHeight == -1 or rightHeight == -1: return -1 return max(leftHeight,rightHeight) + 1 return height(root) > -1
最新回复(0)