输入一棵节点数为 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;
}
}
publicclass Solution {
//自顶向下/*public boolean IsBalanced_Solution(TreeNode root) {
//空树也是平衡二叉树if (root ==null) returntrue;
//左子树深度
int left = deep(root.left);
//右子树深度
int right = deep(root.right);
if (left - right >1|| right - left >1) returnfalse;
return IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);
}
public int deep (TreeNode node) {
if (node ==null) return0;
//左遍历
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) returntrue;
return getdepth(root) !=-1;
}
public int getdepth (TreeNode node) {
if (node ==null) return0;
//左遍历
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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了