剑指offer 平衡二叉树 Java
程序员文章站
2022-07-10 14:34:51
...
题目
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
题解
直接递归即可
public class Solution {
boolean isBalanced = true;
public boolean IsBalanced_Solution(TreeNode root) {
depth(root);
return isBalanced;
}
public int depth(TreeNode root){
if(root == null) return 0;
int left = depth(root.left);
int right = depth(root.right);
if(left - right>1||right - left>1) isBalanced = false;
return left>right?left+1:right+1;
}
}
上面的方法会出现重复计算,当我们判断到已经不平衡时无需再进行计算,直接返回特定值即可。
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
int isBalanced = depth(root);
return isBalanced==-1?false:true;
}
public int depth(TreeNode root){
if(root == null) return 0;
int left = depth(root.left);
if(left == -1) return -1;
int right = depth(root.right);
if(right == -1) return -1;
if(left - right>1||right - left>1){
return -1;
}
else return left>right?left+1:right+1;
}
}
上一篇: 10.二进制中1的个数(JAVA)
推荐阅读
-
《剑指offer》面试题6 重建二叉树
-
剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。
-
剑指offer31:整数中1出现的次数(从1到n整数中1出现的次数)
-
剑指offer28:找出数组中超过一半的数字。
-
剑指offer27:按字典序打印出该字符串中字符的所有排列
-
C#版剑指Offer-001二维数组中的查找
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
剑指offer13:数组[奇数,偶数],奇数偶数相对位置不变。
-
剑指offer第二天
-
剑指offer JZ31 整数中1出现的次数 Python 解