給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。 本題中,一棵高度平衡二叉樹定義為:
乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。
最優解:從底至頂(提前阻斷)
思路是對二叉樹做後序遍歷,從底至頂返回子樹最大高度,若判定某子樹不是平衡樹則 「剪枝」 ,直接向上返回。
遞迴推導
遞迴到最深處返回0,因為葉子節點的左右節點是空;此時max(left,right)+1=0+1=1 ,+1就是為了計數的,把葉子節點這一層加上
想象所有遞迴到最後第一步返回值都是1,然後往上一層想,葉子節點的父節點也會得到 的返回值
遞迴的往上統計樹的高度
# 返回以節點root為根節點的子樹的最大高度
return max(left, right) + 1 # 即節點 root 的左右子樹中最大高度加 1
else:
return -1
leetcode 110 平衡二叉樹 平衡二叉樹
leetcode 110 平衡二叉樹 平衡二叉樹要求所有節點的左右子樹的高度差小於1,因此,只需在遍歷的時候返回其左右子樹的深度。definition for a binary tree node.public class treenode treenode int val treenode int...
LeetCode110 平衡二叉樹
給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。示例 2 給定二叉樹 1,2,2,3,3,null,nul...
LeetCode 110 平衡二叉樹
給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。示例 2 給定二叉樹 1,2,2,3,3,null,nul...