zoukankan      html  css  js  c++  java
  • 【力扣】110. 平衡二叉树

     给定一个二叉树,判断它是否是高度平衡的二叉树。

    本题中,一棵高度平衡二叉树定义为:

    一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

    示例 1:

    给定二叉树 [3,9,20,null,null,15,7]

    3
    /
    9 20
    /
    15 7
    返回 true 。

    示例 2:

    给定二叉树 [1,2,2,3,3,null,null,4,4]

    1
    /
    2 2
    /
    3 3
    /
    4 4
    返回 false 。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/balanced-binary-tree
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

     时间复杂度O(n)  空间复杂度O(n)

        public boolean isBalanced(TreeNode root) {
            return recur(root) != -1;
        }
    
        private int recur(TreeNode root) {
            if (root == null) return 0;
            int left = recur(root.left);
            if(left == -1) return -1; // 如果左子节点中存在left - right > 2 则返回 -1
            int right = recur(root.right);
            if(right == -1) return -1; // 如果右子节点中存在left - right > 2 则返回 -1
            return Math.abs(left - right) < 2 ? Math.max(left, right) + 1 : -1; //得到层数,如果层数相减得到的绝对值,大于1 ,则认为有问题,返回-1
        }
    一个入行不久的Java开发,越学习越感觉知识太多,自身了解太少,只能不断追寻
  • 相关阅读:
    AS3 判断双击事件
    php 数据类型转换与比较
    几行几列算法
    CCNode的属性说明
    bitmapdata的知识点
    addFrameScript用法
    TweenMax.allTo
    flash TweenMax用法
    flash流媒体资料
    c实现windows socket
  • 原文地址:https://www.cnblogs.com/fengtingxin/p/13519697.html
Copyright © 2011-2022 走看看