题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
分类:二叉树
解法1:平衡二叉树有两个个条件,第一个是左右子树高度相差不能超过1,第三个是左右子树也是平衡二叉树
根据第二个条件,显然是使用递归解决。
第一个条件要求我们每次都判断左右子树高度差,由于函数返回值已经是Boolean类型的了
所以我们只能通过参数的形式来传递这个高度
分类:二叉树
解法1:平衡二叉树有两个个条件,第一个是左右子树高度相差不能超过1,第三个是左右子树也是平衡二叉树
根据第二个条件,显然是使用递归解决。
第一个条件要求我们每次都判断左右子树高度差,由于函数返回值已经是Boolean类型的了
所以我们只能通过参数的形式来传递这个高度
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
class Deepth{
int val = 0;
}
public boolean IsBalanced_Solution(TreeNode root) {
Deepth r = new Deepth();
return is_balanced(root, r);
}
public boolean is_balanced(TreeNode root,Deepth d){
if(root==null){
d.val = 0;
return true;
}
Deepth l = new Deepth();Deepth r = new Deepth();
if(is_balanced(root.left, l) && is_balanced(root.right, r)){
if(l.val-r.val<=1 && l.val-r.val>=-1){
d.val = l.val>r.val?l.val+1:r.val+1;
return true;
}
}
return false;
}
}