Balanced Binary Tree

来源:互联网 发布:东北大学软件学院好吗 编辑:程序博客网 时间:2024/06/06 01:46

题目

Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

方法

分别计算左右子树的高度,看看是否满足平衡的要求。
如果不满足:返回false;
如果满足:接着递归判断左右子树是否满足。
上述重复计算的次数比较多,但是通过了。

PS:可以使用全局变量,进行后序遍历。
int depth(TreeNode node) {if (node == null) {return 0;}int left = depth(node.left);int right = depth(node.right);return left > right ? left + 1: right + 1;}    public boolean isBalanced(TreeNode root) {    if (root == null) {    return true;    }            int left = depth(root.left);        int right = depth(root.right);        int dif = Math.abs(right - left);        if (dif > 1) {        return false;        } else {        return isBalanced(root.left) && isBalanced(root.right);        }    }


0 0
原创粉丝点击