题解 | #平衡二叉树(java递归实现)#

平衡二叉树

http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222

做题不要想当然。平衡二叉树不单单是根节点树平衡,左右子树也要平衡,需要逐一判断

public class Solution {

    boolean res = true;

    public boolean IsBalanced_Solution(TreeNode root) {

        preorder(root);

        return res;
    }

    private void preorder(TreeNode node) {
        if (node != null) {
            if (!judge(node)) {
                res = false;
                return;
            }
            preorder(node.left);
            preorder(node.right);
        }
    } 

    private boolean judge (TreeNode node) {
        if (Math.abs(treeDepth(node.left)-treeDepth(node.right)) <= 1) {
            return true;
        } else {
            return false;
        }
    }

    private int treeDepth(TreeNode treeNode) {

        if (treeNode == null) {
            return 0;
        }

        return Math.max(treeDepth(treeNode.left),treeDepth(treeNode.right)) + 1;
    }
}
全部评论

相关推荐

03-04 19:02
云南大学 Java
Yki_:没挂,只是没人捞,该干啥干啥,等着就好了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务