劍指offer——平衡二叉樹判定
阿新 • • 發佈:2018-12-14
針對於樹的操作,大部分都是用遞迴操作的,根據遞迴運算,要確定重複迴圈的過程以及截止條件,不過針對二叉樹,還是比較難思考的。
class Solution: res=True def IsBalance_Solution(self,pRoot): self.judge(pRoot) return self.res def judge(self,root): if not root: return 0 left=1+self.judge(self.left) right=1+self.judge(self.right) if abs(left-right)>1: self.rse=Flase return max(left,right)
兩步遞迴方法:
class Solution: def IsBalance_Solution(self,root): if not root: return True if abs(self.maxDepth(root.left)-self.maxDepth(root.right))>1: return Flase return self.IsBalance_Solution(self.left) and self.IsBalance_Solution(self.right) def maxDepth(self,root) if not root: return 0 return max(self.maxDepth(root.left),self.maxDepth(root.right))+1