• 剑指Offer(Java版)第四十四题:输入一棵二叉树,判断该二叉树是否是平衡二叉树。



    /*
    输入一棵二叉树,判断该二叉树是否是平衡二叉树。
    */
    //平衡二叉树(Balanced Binary Tree),具有以下性质:
    //它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,
    //并且左右两个子树都是一棵平衡二叉树。
    //最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,
    //可以参考Fibonacci数列,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量。
    public class Class44 {

    public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
    this.val = val;

    }
    }

    public boolean IsBalanced_Solution(TreeNode root) {
    if(root == null){
    return true;
    }
    if(findTreeHeight(root) != -1){ // 使用-1标志来进行剪枝
    return true;
    }
    return false;
    }
    public int findTreeHeight(TreeNode root){
    if(root == null){
    return 0;
    }
    int leftTree = findTreeHeight(root.left);
    if(leftTree == -1){
    return -1;
    }
    int rightTree = findTreeHeight(root.right);
    if(rightTree == -1){
    return -1;
    }
    return Math.abs(leftTree - rightTree) > 1 ? -1 : Math.max(leftTree + 1, rightTree + 1);

    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub

    }

    }

  • 相关阅读:
    假丶依赖注入
    .NET Core 傻瓜式CSRedisCore缓存
    .NET Core MD5加密 32位和16位
    数据库所对应的函数
    使用通配符进行过滤
    WHERE 子句操作符
    不同的数据库查询行数的方式
    第一课了解SQL
    微服务架构综述
    三层应用与单块架构
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12522838.html
Copyright © 2020-2023  润新知