zoukankan      html  css  js  c++  java
  • 平衡二叉树

    offer_39

    概要:平衡二叉树

    题目描述

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

    在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树

    思路:

    • 平衡二叉树就是左右子树的高度差不超过1的树
      • 先计算左右子树的高度
        • 如果一棵树只有一个结点,那么它的深度为1;
        • 如果根结点只有左子树没有右子树,那么树的深度是左子树的深度加1,加1是加(当前结点)根节点这一层也就是当前结点下面没有结点了,就返回0,然后根据栈弹出,会加上当前这一层,这个+1 就是当前这一层
        • 如果既有左子树又有右子树,那么树的深度应该是左、右子树中深度较大的值再加1
      • 然后计算高度差
      • 最后看高度差来返回结果

    image-20200812112614256

    代码实现:

        public boolean IsBalanced_Solution(TreeNode root) {
            if(root == null) return true;
            //获取左子树的深度,注意,传入的是当前树的左子节点
            int left = getDepth(root.left);
            //获取右子树的深度。传入的是当前树的右子节点
            int right = getDepth(root.right);
            //如果左右子树的深度的差值>1 就说明不是平衡二叉树
            return Math.abs(left - right) > 1? false: true;
          
        }
        //获取树的深度
     public int   getDepth(TreeNode root){//传入的是当前树的头结点,把头结点在的这一层代表深度为1,所以后面要加上当前层也就是+1
         
      return (root == null)? 0: Math.max(getDepth(root.left),getDepth(root.right))+1;
         
         
     }
    
  • 相关阅读:
    vbs实现c++的vector
    二叉树的线索化及其遍历(必会)
    二叉树的7种遍历(必背)
    PyQt5发布技巧:指定插件(plugins)路径
    pyqt5环境变量踩坑记
    怎样把ndarray转换为PyQt中的QPixmap
    桌面应用“标注器”打包踩坑记
    怎样用cmd脚本添加Qt的环境变量
    Krpano动态热点添加始终显示的文字
    VS解决方案中个文件类型含义
  • 原文地址:https://www.cnblogs.com/SunAlbert/p/13489890.html
Copyright © 2011-2022 走看看