zoukankan      html  css  js  c++  java
  • leetcode刷题笔记一百一十题 平衡二叉树

    leetcode刷题笔记一百一十题 平衡二叉树

    源地址: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 。

    /**
    本题可分为自顶向下或自底向上两种思路
    自顶向下的方法需要使用辅助函数计算当前结点的左右子树的高度,然后判断高度差是否小于2
    */
    /**
     * Definition for a binary tree node.
     * class TreeNode(var _value: Int) {
     *   var value: Int = _value
     *   var left: TreeNode = null
     *   var right: TreeNode = null
     * }
     */
    object Solution {
        def isBalanced(root: TreeNode): Boolean = {
            def helper(root: TreeNode): Int = {
                if (root == null) return 0
                else return 1 + Math.max(helper(root.left), helper(root.right))
            }
            if (root == null) return true
            if (Math.abs(helper(root.left) - helper(root.right)) < 2) return isBalanced(root.left) && isBalanced(root.right)
            return false
        }
    }
    
    /**
    由于自顶向下的方法含有子树高度的重复计算,使用自底向上能够有效的标记不符合平衡的子树为-1,整个向上过程中,如果出现-1直接返回
    */
    bject Solution {
        def isBalanced(root: TreeNode): Boolean = {
            def helper(root: TreeNode): Int = {
                if (root == null) return 0
                val leftTree = helper(root.left)
                if (leftTree == -1) return -1
                val rightTree = helper(root.right)
                if (rightTree == -1) return -1
                if (Math.abs(leftTree - rightTree) < 2) return Math.max(leftTree, rightTree)+1
                else return -1
            }
            if (root == null) return true
            return helper(root) != -1
        }
    }
    
  • 相关阅读:
    android 从服务器获取新闻数据并显示在客户端
    Java多线程系列之:线程间的通信
    Java多线程系列之:多线程一些基本概念
    Java多线程系列之:内存可见性
    计算机基础
    tomcat系列之六:Tomcat顶层组件
    tomcat系列之五:Tomcat各个组件生命周期
    tomcat系列之四:Tomcat架构(下)
    tomcat系列之三:Tomcat架构
    tomcat系列之二:Servlet规范
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13446973.html
Copyright © 2011-2022 走看看