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); } }