Python實現"平衡二叉樹"的一種方法
阿新 • • 發佈:2019-02-03
判斷給定的二叉樹是不是平衡二叉樹
本文體中,高平衡二叉樹定義為:二叉樹中任意結點的左右子樹深度差不超過1
Example 1:
Given the following tree
[3,9,20,null,null,15,7]
:3 / \ 9 20 / \ 15 7Return true.
Example 2:Given the following tree
[1,2,2,3,3,null,null,4,4]
:1 / \ 2 2 / \ 3 3 / \ 4 4Return false.
1:遞迴,在計算二叉樹每條路徑深度的同時判斷是否滿足平衡二叉樹的條件(在題"二叉樹的最大深度https://mp.csdn.net/postedit/82381788"的解法基礎上,對遞迴新增判斷平衡二叉樹)
class Solution(object): def isBalanced(self, root): """ :type root: TreeNode :rtype: bool """ if not root: return True if self.depth(root)==-1: #因為False的特殊性(空、可以數字做加法),所以選擇-1作為返回和判斷條件 return False else: return True def depth(self, root): if not root: return 0 left = self.depth(root.left) if left==-1: #因為False的特殊性(空、可以數字做加法),所以選擇-1作為返回和判斷條件 return -1 right = self.depth(root.right) if right==-1: return -1 if left>right+1 or right>left+1: #因為False的特殊性(空、可以數字做加法),所以選擇-1作為返回和判斷條件 return -1 return max(left+1, right+1)