标签:判断 定义 pre def 绝对值 高度 color 关心 class
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
把递归就当作三个节点,左 根 右。这层递归里要做的事情就是找到最大高度,找最大高度就是左子树算完最大高度,右子树也算完最大高度,然后+1即可。所以就是右max(height(左),height(右))+1的存在。
得到了该根节点的最大高度之后,还要左右子树的最大高度相减必须小于等于1才是平衡二叉树;不仅当前根节点要满足这个条件,这棵树中的所有根节点都必须满足平衡二叉树,所以就有最后一行两个and的存在
class Solution: def isBalanced(self, root: TreeNode) -> bool: #递归要关心的事: #1.终止条件:肯定是节点为空 #2.返回值是什么,是节点的最大高度 #3.本级递归要做什么:要找到子树的最大高度 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)#左右子树都需要是平衡二叉树,并且root要左右子树相减小于等于1
标签:判断 定义 pre def 绝对值 高度 color 关心 class
原文地址:https://www.cnblogs.com/liuxiangyan/p/14693047.html