剑指offer——61平衡二叉树
2024-10-05 04:27:39
题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
题解:
方法一:使用深度遍历,判断每个节点是不是平衡二叉树,这种从上至下的方法会导致底层的节点重复判断多次
方法二:使用后序遍历判断,这种方法为自下而上,每个节点只需要判断一次即可
//方法一:使用深度遍历,判断每个节点是不是平衡二叉树,这种从上至下的方法会导致底层的节点重复判断多次
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;
}
};
最新文章
- stm32 按键
- UIScrollView
- 解析sql语句中left_join、inner_join中的on与where的区别
- WORD基础快捷键
- mysql中char,varchar,text区别总结
- ggts下载地址
- Nutch搜索引擎Solr简介及安装
- C#项目间循环引用的解决办法,有图有真相
- Python爬虫Scrapy(二)_入门案例
- iOS在GitHub Top 前100 简介
- SQL Server复制表结构和表数据生成新表的语句
- 寒冬之下,移动开发没人要了? 浅谈 iOS 开发者该 何去何从?
- nginx 服务脚本编写模板
- Go语言运算符
- 攻击者利用的Windows命令、横向渗透工具分析结果列表
- requests中获取请求到文本编码格式
- Zookeeper+ActiveMQ集群搭建
- Oracle EBS AR 收款API收款方法标识无效
- 如何利用JConsole观察分析JAVA程序的运行
- ActiveMQ-Prefetch机制和constantPendingMessageLimitStrategy
热门文章
- git push 报错:failed to push some refs to &#39;git@git.xxxx:devops/thor.git&#39;
- 模板引擎的简单原理template
- linux shell unzip multiple zip files
- Dayjs处理时间函数的插件
- __attribute__((regparm(3))) from GNU C
- tomcat部署项目后,项目没有成功部署到tomcat里面,或者部署的是之前项目
- linux下samba共享服务器搭建详解
- 【LeetCode】排序
- mongodb的学习 (1)
- Java基础之ArrayList类