二叉树平衡检查_牛客网

题目描述:二叉树平衡检查
实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。给定指向树根结点的指针 TreeNode* root,请返回一个bool,代表这棵树是否平衡。

代码实现:

/*
    二叉树平衡检查
    实现一个函数,检查二叉树是否平衡,平衡的定义如下,
    对于树中的任意一个结点,其两颗子树的高度差不超过1。
    给定指向树根结点的指针TreeNode* root,
    请返回一个bool,代表这棵树是否平衡。
*/
import java.util.*;
class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;
    public TreeNode(int val) {
        this.val = val;
    }
}
public class Balance {
    public boolean isBalance(TreeNode root) {
        if(root==null){//判断根节点root是否为NULL,是则返回true;
            return true;
        }else{
            int left=getDeep(root.left);
            int right=getDeep(root.right);
            if(Math.abs(left-right)<=1){
                return isBalance(root.left)&&isBalance(root.right);
            }else{
                return false;
            }
        }
    }
    public int getDeep(TreeNode root){
        /*
        用递归的方法求一个树的高度,
        每次求出左右子树的最大高度再加1即为父节点的高度
        */
        if(root!=null){
            int left=getDeep(root.left);
            int right=getDeep(root.right);
            return left>right?left+1:right+1;
        }else{
            return 0;
        }
    }
}
发布了71 篇原创文章 · 获赞 2 · 访问量 7480

猜你喜欢

转载自blog.csdn.net/weixin_42512675/article/details/103367655