zoukankan      html  css  js  c++  java
  • Go语言实现:【剑指offer】平衡二叉树

    该题目来源于牛客网《剑指offer》专题。

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

    本题中,一棵高度平衡二叉树定义为:
    一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过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 。

    Go语言实现:

    /**
     * Definition for a binary tree node.
     * type TreeNode struct {
     *     Val int
     *     Left *TreeNode
     *     Right *TreeNode
     * }
     */
    func isBalanced(root *TreeNode) bool {
        if root == nil {
            return true
        }
        
        return math.Abs(float64(maxDepth(root.Left)) - float64(maxDepth(root.Right))) <= 1 &&
            isBalanced(root.Left) && isBalanced(root.Right)
    }//最大深度
    func maxDepth(root *TreeNode) int {
        if root == nil {
            return 0
        } else {
            left := maxDepth(root.Left)
            right := maxDepth(root.Right)
            if left > right {
                return 1 + left
            } else {
                return 1 + right
            }
        }
    }
    
  • 相关阅读:
    Android网络通信的六种方式
    launcher4.0加载
    MessageDigest使用 完成MD5加密
    java集合
    Context
    android字库使用
    Java动态代理
    积累
    sql游标
    无限级CSS树形菜单
  • 原文地址:https://www.cnblogs.com/dubinyang/p/12099390.html
Copyright © 2011-2022 走看看