LeetCode--No.110--Balanced Binary Tree--待完善

来源:互联网 发布:c语言心型示爱代码 编辑:程序博客网 时间:2024/05/02 04:36

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.

算法:

两重递归。一次递归判断平衡。一次递归求树的高度。觉得有点儿脑残。速度有点儿慢。

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public boolean isBalanced(TreeNode root) {        if (root == null)            return true;        int l = highOfTree(root.left);        int r = highOfTree(root.right);        int d = Math.abs(l-r);        return isBalanced(root.left) && isBalanced(root.right) && (d<=1);            }    public int highOfTree(TreeNode root){        if (root == null)            return 0;        else{            int l = highOfTree(root.left);            int r = highOfTree(root.right);            if (l > r)                return l+1;            else                return r+1;        }    }}

更好的算法在此:

http://www.cnblogs.com/Antech/p/3705928.html


待补充

0 0
原创粉丝点击