求二叉树的是否为平衡二叉树

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。
 
思路:看到这道题思路是有的,构造一个函数,输入一个节点,通过左右孩子节点返回的深度,判断左右孩子的深度是否满足相差不超过一,并且左右孩子都是平衡二叉树,则把左右孩子较深的那个加一返回。
可是并不太明白如和返回两个返回值。  后来看了解析才明白,其中一个是返回值的形式传递的,就是树的深度,然后设置一个全局变量,在这个递归函数中间对他进行设置,只要有一层不满足就设置为false,返回这个全局变量就可以了
 
public class Solution {
    boolean istrue=true;
    public boolean IsBalanced_Solution(TreeNode root) {
        getdepth(root);
        return istrue;
    }
    public int getdepth(TreeNode root){
        if(root==null){
            return 0;
        }
        int leftdepth=getdepth(root.left);
        int rightdepth=getdepth(root.right);
        if(Math.abs(leftdepth-rightdepth)>1){
            istrue=false;
        }
        return (leftdepth>rightdepth?leftdepth:rightdepth)+1;
    }
}

 

posted @ 2016-09-30 15:54  萝卜er  阅读(145)  评论(0编辑  收藏  举报