题目描述
给定一颗二叉树,判断它是不是高度平衡的二叉树。一颗高度平衡二叉树定义为:一个二叉树的每个节点的左右子树的高度差的绝对值不超过1。
示例1
给定二叉树[3,9,20,null,null,15,7],返回True
给定二叉树[1,2,2,3,3,null,null,4,4],返回False
代码实现
定义树节点 class TreeNode: def __init__(self,x): self.val = x self.left = None self.right = None 重构二叉树 def buildTree(nums , i): if i >= len(nums) or nums[i] == 'null': return None root = TreeNode(nums[i]) root.left = buildTree(nums , 2*i+1) root.right = buildTree(nums , 2*i+1) return root class Solution: def isBalanced(self,root: TreeNode) -> bool: if not root: return True index1 = abs(self.tree_depth(root.left) - self.tree_depth(root.right)) <= 1 index2 = self.isBalanced(root.left) index3 = self.isBalanced(root.right) return index1 and index2 and index3 def tree_depth(self,node) -> int: left_depth = float("-inf") right_depth = float("-inf") if not node: return 0 if not (node.left or node.right): return 1 if node.left: left_depth = max(self.tree_depth(node.left),left_depth) if node.right: right_depth = max(self.tree_depth(node.right),right_depth) return max(left_depth , right_depth) + 1