您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關python中的平衡二叉樹該怎么理解,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過 1,那么它就是一棵平衡二叉樹。
給定二叉樹 [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
返回 true 。
給定二叉樹 [1,2,2,3,3,null,null,4,4]
1
/ \
2 2
/ \
3 3
/ \
4 4
返回 false 。
節點=>深度
字典中; 然后再遍歷一遍節點, 針對每個節點, 判斷它左右子節點的深度是否滿足要求, 所有節點都滿足的話才說明平衡. 但是這種方案需要遍歷兩邊節點, 效率不太高, 如何一次性遍歷得出結果呢?class Solution:
def isBalanced(self, root: TreeNode) -> bool:
# 遞歸, 邊求深度邊判斷, 返回深度, 全局變量標記當前是否平衡
balance = True
def getDepth(node):
nonlocal balance
if not node or not balance:
# 遞歸出口: 如果節點為空或者不平衡, 返回0, 無需繼續遞歸了
return 0
ldepth = getDepth(node.left)
rdepth = getDepth(node.right)
if abs(ldepth - rdepth) > 1:
# 不平衡, 全局變量設為false
balance = False
# 返回當前節點自身的深度
return max(ldepth, rdepth) + 1
getDepth(root)
return balance
上述就是小編為大家分享的python中的平衡二叉樹該怎么理解了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。