作者: 负雪明烛
id: fuxuemingzhu
个人博客: http://fuxuemingzhu.cn/


题目地址:https://www.nowcoder.com/ta/coding-interviews

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

解题方法

平衡二叉树的定义是任何节点的左右子树高度差都不超过1的二叉树。

按照定义,很容易得出获得左右子树高度,然后判断。递归写法。

Python代码:

# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def IsBalanced_Solution(self, pRoot):
if not pRoot: return True
left = self.TreeDepth(pRoot.left)
right = self.TreeDepth(pRoot.right)
if abs(left - right) > 1:
return False
return self.IsBalanced_Solution(pRoot.left) and self.IsBalanced_Solution(pRoot.right) def TreeDepth(self, pRoot):
if not pRoot: return 0
left = self.TreeDepth(pRoot.left)
right = self.TreeDepth(pRoot.right)
return max(left, right) + 1

C++代码如下:

class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
if (!pRoot) return true;
int left = depth(pRoot->left);
int right = depth(pRoot->right);
return abs(left - right) <= 1 && IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right);
}
int depth(TreeNode* pRoot) {
if (!pRoot) return 0;
return max(depth(pRoot->left), depth(pRoot->right)) + 1;
}
};

日期

2018 年 3 月 25 日 —— 周日,天气突然变热了。好风光好天气
2019 年 3 月 7 日 —— 3月开始,春天到了

最新文章

  1. JS表单验证-12个常用的JS表单验证
  2. 更改vs自带的模板
  3. poj 1847( floyd &amp;&amp; spfa )
  4. BZOJ3171 Tjoi2013 循环格
  5. 转:给自己TopCoder SRM的建议
  6. Permissions 0664 for &#39;/home/root/.ssh/id_rsa&#39; are too open.
  7. iOS 轻量级的数据库leveldb
  8. 李明杰视频 SVN
  9. Oracle DBWR,LGWR,CKPT,ARCH 触发条件 总结
  10. 设置UITableView背景透明/监听cell左边的删除按钮的点击事件
  11. Myeclipse 配置多个tomcat
  12. mybatis自动生成mapper,dao映射文件
  13. 【学习笔记】Spring中的BeanFactory和ApplicationContext 以及 Bean的生命周期(Y2-3-2)
  14. PTA 银行排队问题之单队列多窗口服务
  15. CodeForces 958F3 Lightsabers (hard) 启发式合并/分治 多项式 FFT
  16. Atitit r2017 r6 doc list on home ntpc.docx
  17. [MapReduce_8] MapReduce 中的自定义分区实现
  18. 运行和控制Nginx——命令行参数和信号
  19. dD Geometry Kernel ( Geometry Kernels) CGAL 4.13 -User Manual
  20. NYOJ 202 红黑树 (二叉树)

热门文章

  1. 什么是DDL,DML,DCL
  2. vivo 敏感词匹配系统的设计与实践
  3. 容器之分类与各种测试(四)——unordered-multimap
  4. lvm 创建扩展
  5. 【分布式】Zookeeper的Leader选举-选举过程介绍(经典的Paxos算法解析)
  6. 【编程思想】【设计模式】【结构模式Structural】门面模式/外观模式Facade
  7. Synchronized深度解析
  8. XML(可拓展标记语言)基本概念
  9. frp实现基于反向代理的内网穿透
  10. DevOps和SRE的区别