首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
每日算法之判断是不是平衡二叉树
返回列表
发新帖
每日算法之判断是不是平衡二叉树
[复制链接]
发表于 2022-11-20 10:05:47
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
JZ79 判断是不是平衡二叉树
描述
输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
复制
代码
思路
左右两个子树的高度差的绝对值不超过1
左右两个子树都是一棵平衡二叉树
复制
代码
代码
package esay.JZ79判断是不是平衡二叉树;
class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public class Solution {
//自顶向下
/*public boolean IsBalanced_Solution(TreeNode root) {
//空树也是平衡二叉树
if (root == null) return true;
//左子树深度
int left = deep(root.left);
//右子树深度
int right = deep(root.right);
if (left - right > 1 || right - left > 1) return false;
return IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);
}
public int deep (TreeNode node) {
if (node == null) return 0;
//左遍历
int left = deep(node.left);
//右遍历
int right = deep(node.right);
return left > right ? left + 1 :right + 1;
}*/
//自底向上
public boolean IsBalanced_Solution(TreeNode root) {
if (root == null) return true;
return getdepth(root) != -1;
}
public int getdepth (TreeNode node) {
if (node == null) return 0;
//左遍历
int left = getdepth(node.left);
if (left < 0) return -1;
//右遍历
int right = getdepth(node.right);
if (right < 0) return -1;
return Math.abs(left - right) > 1 ? -1 : Math.max(left, right) + 1;
}
}
复制代码
回复
使用道具
举报
返回列表
美食家大橙子
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表