剑指offer-39.平衡二叉树

题目描述

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

解题思路:

1、如果是空树,则是一颗平衡二叉树;
2、递归遍历左右子树,如果深度之差的绝对值大于1,返回-1;
3、否则返回树的深度,是一颗平衡二叉树

代码实现:

public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
        /*
        解题思路:
        1、如果是空树,则是一颗平衡二叉树;
        2、递归遍历左右子树,如果深度之差的绝对值大于1,返回-1;
        3、否则返回树的深度,是一颗平衡二叉树
        */
        return TreeDepth(root)!=-1;
    }
    int TreeDepth(TreeNode root){
        if(root==null){
            return 0;
        }
        int leftDepth,rightDepth;
        leftDepth = TreeDepth(root.left);
        rightDepth = TreeDepth(root.right);
        if(leftDepth == -1 || rightDepth == -1 || Math.abs(leftDepth-rightDepth) > 1){
            return -1;
        }else{
            return (leftDepth>rightDepth?leftDepth:rightDepth)+1;
        }
    }
}

 效率:

 
发布了89 篇原创文章 · 获赞 0 · 访问量 936

猜你喜欢

转载自blog.csdn.net/qq_34449717/article/details/103882107