LeetCode110 平衡二叉樹(樹的深度)

2021-10-09 07:24:15 字數 1419 閱讀 5037

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。  本題中,一棵高度平衡二叉樹定義為:  

乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過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...