判断平衡二叉树

来源:互联网 发布:女鬼桂缘捏脸数据 编辑:程序博客网 时间:2024/04/29 07:55

题目:

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


解题思路:

首先设置一个函数用来判断树的高度,有了这个函数,我们就可以用来判断二叉树某一个分支的高度。接下来需要了解的是平衡二叉树即对于任意一个节点来说,起左右子树的高度差的绝对值小于等于1,我们可以用上面的函数判断左右子树的高度,如果高度差大于1则返回false,否则递归地判断左右子树。


代码:

public boolean IsBalanced(TreeNode root) {    if (root == null) {        return true;    }        int left = TreeDepth(root.left);    int right = TreeDepth(root.right);    if (Math.abs(left - right) > 1) {        return false;    }    return isBalanced(root.left) && isBalanced(root.right);}private int TreeDepth(TreeNode root) {    if (root == null) {        return 0;    }    int left = TreeDepth(root.left);    int right = TreeDepth(root.right);        return left > right? left+1 : right+1;}


-----------EOF-----------

0 0