題目描述
輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。
思路
代碼
class Solution:
def isBalanced(self, root:TreeNode)->bool:
def recur(root):
if not root: return return 0
left = recur(root.left)
if left == -1: return -1
right = recur(root.right)
if right == -1: return -1
return max(left, right) + 1 if abs(left-right)<=1 else -1
return recur(root) != -1
複雜度
時間複雜度 O(N): N 爲樹的節點數;最差情況下,需要遞歸遍歷樹的所有節點。
空間複雜度 O(N): 最差情況下(樹退化爲鏈表時),系統遞歸需要使用 O(N)的棧空間。