1.题目:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。(在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 )
2.思路:
判断一个数是否为平衡二叉树。平衡二叉树是左子树的高度与右子树的高度差的绝对值小于等于1,同样左子树是平衡二叉树,右子树为平衡二叉树。
方法一:自上而下的遍历
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
//平衡二叉树:|leftHeight-rightHeight|<=1
if(root==null){//判空
return true;
}
if(Math.abs(leftHeight(root)-rightHeight(root))>1){//判断左右高度差值的绝对值
return false;
}else{
return true;
}
}
public int height(TreeNode node){//求当前节点的高度
return Math.max(node.left==null?0:height(node.left),node.right==null?0:height(node.right))+1;//采用三目运算+递归的方式
}
public int leftHeight(TreeNode root){//当前节点的左节点高度
if(root.left==null){//判空
return 0;
}
return height(root.left);
}
public int rightHeight(TreeNode root){//当前节点的右节点的高度
if(root.right==null){
return 0;
}
return height(root.right);
}
}
京公网安备 11010502036488号