码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode#110 Balanced Binary Tree

时间:2015-07-21 22:13:12      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

Problem Definition:

Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as a

binary tree in which the depth of the two subtrees of every node never differ by more than 1.

 

这里面临的问题是,既要记录子树的高度,又要记录子树是否平衡。

Solution 1: 只记录子树是否平衡,每次都重新计算高度,太耗时。

Solution 2: 用一个tuple来记录高度和平衡。

 1     # @param {TreeNode} root
 2     # @return {boolean}
 3     def isBalanced(root):
 4         b,h=func(root)
 5         return b
 6 
 7     def func(root):
 8         if root==None:
 9             return (True,0)
10         lb,lh=func(root.left)
11         rb,rh=func(root.right)
12         return (abs(lh-rh)<=1 and lb and rb, max(lh,rh)+1)
13     

 

 

Solution 3: 把这两个变量结合在一起,用一个负数表示不平衡时的高度。

 1     def isBalanced(self, root):
 2         return self.height(root)!=-1
 3 
 4     def height(self,root):
 5         if root==None:
 6             return 0
 7         hl=self.height(root.left)
 8         hr=self.height(root.right)
 9         if hl==-1 or hr==-1 or abs(hl-hr)>1:
10             return -1
11         return max(hl,hr)+1

 

LeetCode#110 Balanced Binary Tree

标签:

原文地址:http://www.cnblogs.com/acetseng/p/4665703.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!