题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。
 
题解:
  方法一:使用深度遍历,判断每个节点是不是平衡二叉树,这种从上至下的方法会导致底层的节点重复判断多次
  方法二:使用后序遍历判断,这种方法为自下而上,每个节点只需要判断一次即可
 
  

 //方法一:使用深度遍历,判断每个节点是不是平衡二叉树,这种从上至下的方法会导致底层的节点重复判断多次
class Solution01 {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
if (pRoot == nullptr)return true;
int left = getHeight(pRoot->left);
int right = getHeight(pRoot->right);
if (abs(left - right) > )return false;
return IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right);
}
private:
int getHeight(TreeNode *pRoot)
{
if (pRoot == nullptr)return ;
int left = getHeight(pRoot->left);
int right = getHeight(pRoot->right);
return max(left, right) + ;
}
}; //方法二:使用后序遍历判断,这种方法为自下而上,每个节点只需要判断一次即可
class Solution02 {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
if (pRoot == nullptr)return true;
int level = ;
return IsBalanced_Solution(pRoot, level);
}
private:
bool IsBalanced_Solution(TreeNode* pRoot, int &level)
{
if (pRoot == nullptr)
{
level = ;
return true;
}
//按照后序遍历去判断左右子树,然后以当前节点为根树的深度
int left = , right = ;
if (IsBalanced_Solution(pRoot->left, left) && IsBalanced_Solution(pRoot->right, right))
{
if (abs(left - right) <= )
{
level = max(left, right) + ;
return true;
}
}
return false;
}
};

最新文章

  1. stm32 按键
  2. UIScrollView
  3. 解析sql语句中left_join、inner_join中的on与where的区别
  4. WORD基础快捷键
  5. mysql中char,varchar,text区别总结
  6. ggts下载地址
  7. Nutch搜索引擎Solr简介及安装
  8. C#项目间循环引用的解决办法,有图有真相
  9. Python爬虫Scrapy(二)_入门案例
  10. iOS在GitHub Top 前100 简介
  11. SQL Server复制表结构和表数据生成新表的语句
  12. 寒冬之下,移动开发没人要了? 浅谈 iOS 开发者该 何去何从?
  13. nginx 服务脚本编写模板
  14. Go语言运算符
  15. 攻击者利用的Windows命令、横向渗透工具分析结果列表
  16. requests中获取请求到文本编码格式
  17. Zookeeper+ActiveMQ集群搭建
  18. Oracle EBS AR 收款API收款方法标识无效
  19. 如何利用JConsole观察分析JAVA程序的运行
  20. ActiveMQ-Prefetch机制和constantPendingMessageLimitStrategy

热门文章

  1. git push 报错:failed to push some refs to &#39;git@git.xxxx:devops/thor.git&#39;
  2. 模板引擎的简单原理template
  3. linux shell unzip multiple zip files
  4. Dayjs处理时间函数的插件
  5. __attribute__((regparm(3))) from GNU C
  6. tomcat部署项目后,项目没有成功部署到tomcat里面,或者部署的是之前项目
  7. linux下samba共享服务器搭建详解
  8. 【LeetCode】排序
  9. mongodb的学习 (1)
  10. Java基础之ArrayList类