平衡二叉树

2018-02-01  本文已影响0人  Hammy

题目:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。

思路:
平衡二叉树的特点是左子树与右子树的高度相差不大于1,所以根据后序遍历先遍历左右子树的特别,结合二叉树的求深度的方法进行判断.

代码

/**
 * Created by Hammy on 2018/2/1.
 * 输入一棵二叉树,判断该二叉树是否是平衡二叉树.
 * 平衡二叉树的要求是左子树和右子树的高度差不相差1
 * 使用后续遍历,因为后续遍历在遍历的过程中左右子树深度已经遍历成功
 */
public class IsBalanced_Solution
{
    private boolean flag = true;
    public boolean isBalanced_Solution(TreeNode root){
       TreeDepth(root);
        return flag;
    }
    private int TreeDepth(TreeNode node){
        if(node == null)
            return 0;

        int left = TreeDepth(node.left);
        int right = TreeDepth(node.right);
        if(Math.abs(left - right) > 1){
            flag = false;
        }
        return (left > right)?left+1:right+1;
    }

}


上一篇下一篇

猜你喜欢

热点阅读