LeetCode--110--平衡二叉树
2024-10-10 01:40:55
问题描述:
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
示例 1:
给定二叉树 [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
返回 true
。
示例 2:
给定二叉树 [1,2,2,3,3,null,null,4,4]
1
/ \
2 2
/ \
3 3
/ \
4 4
返回 false
。
方法1:
通过求子树深度来求子树是否balance。left - right > 1 return False。递归遍历每一个节点。
class Solution(object):
def isBalanced(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
if root == None:
return True
left = self.getDepth(root.left)
right = self.getDepth(root.right)
if abs(left - right) > 1:
return False
return self.isBalanced(root.left) and self.isBalanced(root.right)
def getDepth(self,root):
if root == None:
return 0
left = self.getDepth(root.left)
right = self.getDepth(root.right)
return max(left,right) + 1
变体:
class Solution(object):
def isBalanced(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
def deep(root):
if not root:
return 0
l = deep(root.left)
r = deep(root.right)
if abs(l-r)>1:
self.flag = False
return max(l,r)+1 self.flag=True
deep(root)
if self.flag == False:
return False
else:
return True
2018-09-09 18:24:35
最新文章
- Javacript实现字典结构
- css 补漏
- Sql Server 分区演练 【转】
- 【XLL 框架库函数】 TempInt/TempInt12
- SVM与LR的区别以及SVM的优缺点
- servlet请求转发、包含以及重定向
- 自定义ContentProvider的一些细节探究
- 国内外从事CV相关的企业[转]
- oracle索引,索引的建立、修改、删除
- 【从翻译mos文章】SGA_TARGET与SHMMAX关系
- 创建Windows类别
- iOS毛玻璃擦除效果
- Rigidbody组件及相关API
- java 二叉树
- js实现内容点击复制
- mock测试
- 应用留数定理计算实积分 $\dps{I(x)=\int_{-1}^1\frac{\rd t}{\sqrt{1-t^2}(t-x)}\ (|x|>;1,x\in\bbR)}$ [华中师范大学2010年复变函数复试试题]
- myeclipse2018安装教程(附下载地址)
- Maxwell入门
- 【校招面试 之 C/C++】第16题 C++ new和delete的实现原理
热门文章
- CTC(Connectionist Temporal Classification)介绍
- 本地缓存之GUAVA
- 拉取远程仓库到本地错误The authenticity of host 'github.com (13.229.188.59)' can't be established.
- linux基础命令---tmpwatch
- Linux基础命令---swapoff
- Js基础知识2-对象、对象属性全解
- linux查看是否能访问外网及拥有的公网IP
- WebSocket协议详解
- c++ sleep(windows/linux)
- ActiveMQ、RabbitMQ、RocketMQ、Kafka 对比(图示)