判断一个树是不是平衡二叉树

来源:互联网 发布:日本对外贸易数据2015 编辑:程序博客网 时间:2024/05/22 02:18

思路分析:

树的问题都可以考虑分治的思路。

平衡二叉树,就是要求左、右子数都是平衡的,而且高度差不超过-1

给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 

样例

给出二叉树 A={3,9,20,#,#,15,7}, B={3,#,20,15,7}

A)  3            B)    3    / \                  \  9  20                 20    /  \                / \   15   7              15  7

二叉树A是高度平衡的二叉树,但是B不是

/** * Definition of TreeNode: * public class TreeNode { *     public int val; *     public TreeNode left, right; *     public TreeNode(int val) { *         this.val = val; *         this.left = this.right = null; *     } * } */public class Solution {    /**     * @param root: The root of binary tree.     * @return: True if this Binary tree is Balanced, or false.     */    public boolean isBalanced(TreeNode root) {        // write your code here        return maxDepth(root)!=-1;    }        public int maxDepth(TreeNode root){        if(root==null){            return 0;        }        int left=maxDepth(root.left);        int right=maxDepth(root.right);        if(left==-1||right==-1||Math.abs(left-right)>1){            return -1;        }        return Math.max(left,right)+1;            }}