劍指offer面試題55 - II. 平衡二叉樹(後序遍歷)(剪枝)

題目描述

輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過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)的棧空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章