算法题 19 二叉平衡树检查 牛客网 CC150

实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。

给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡。

解题代码:时间复杂度为O(NlogN) N为树中的节点数

# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Balance:
def isBalance(self, root):
# write code here
if not root:
return True
heightDiff=self.getHeight(root.left)-self.getHeight(root.right)
if abs(heightDiff)>1:
return False
else:
return self.isBalance(root.left) and self.isBalance(root.right) def getHeight(self,root):
if not root:
return 0
return max(self.getHeight(root.left),self.getHeight(root.right))+1

解题代码二:优化版,时间复杂度为O(N),空间复杂度为O(H),H为树的高度

# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Balance:
def isBalance(self, root):
# write code here
if self.checkHeight(root)==-1:
return False
else:
return True def checkHeight(self,root):
if not root:
return 0 #高度为0
leftHeight=self.checkHeight(root.left)
if leftHeight==-1:
return -1 # 不平衡 rightHeight=self.checkHeight(root.right)
if rightHeight==-1:
return -1 # 不平衡
heightDiff=leftHeight-rightHeight
if abs(heightDiff)>1:
return -1
else:
return max(leftHeight,rightHeight)+1

最新文章

  1. bzoj4491奇技淫巧线段树
  2. Hibernate的数据删除,更改
  3. TYVJ P1103 多项式输出 Label:模拟 有点儿坑
  4. 哈希表用于Key与Value的对应
  5. BZOJ1816 [Cqoi2010]扑克牌
  6. vue2.0动态绑定图片src属性值初始化时报错
  7. 自学WPF之Binding(一)
  8. HTTP 0.9 HTTP 1.0 HTTP 1.1 HTTP 2.0区别
  9. Docker私有仓库实例
  10. Collections与Collection
  11. 记一次yii2 上传文件
  12. ES5-ES6-ES7_对象的扩展
  13. 超恶心的TP模版取值
  14. 【NET CORE微服务一条龙应用】开始篇与目录
  15. 13.1 dubbo服务降级源码解析
  16. spark on yarn任务提交缓慢解决
  17. python类的全面介绍
  18. struct2 拦截所有没有登录的用户,强行转到登录界面AuthorizationInterceptor
  19. 使用uWSGI和nginx来设置Django和你的web服务器
  20. Unity3D:Text在Inspector面板中中无法显示,需转换成UTF-8格式

热门文章

  1. Atitit. 真正的全中国文字attilax易语言的特点以及范例
  2. Triangulation by Ear Clipping(耳切法处理多边形三角划分)
  3. python 第三方库下载地址
  4. 转载-好用的linux软件合集
  5. deepin linux下eclipse c/c++ 调试开源代码
  6. abp的权限与导航菜单的关系
  7. Trees on the level UVA - 122 复习二叉树建立过程,bfs,queue,strchr,sscanf的使用。
  8. Eclipse 生成jar包
  9. ZJU 17th 校赛
  10. phpcs,phpmd,phan安装部署,phpstorm配置phpunit