美文网首页
检查一个二叉树是否是平衡二叉树leecode111

检查一个二叉树是否是平衡二叉树leecode111

作者: yellowone | 来源:发表于2020-08-17 08:14 被阅读0次

需要注意的是从底部往上遍历可以减少重复计算。

package main

//Definition for a binary tree node.
type TreeNode struct {
    Val   int
    Left  *TreeNode
    Right *TreeNode
}
/*leecode111
给定一个二叉树,判断它是否是高度平衡的二叉树。

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

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。*/
func isBalanced(root *TreeNode) bool {
    return getTreeHeight(root) > -1
}

func getTreeHeight(root *TreeNode) int {
    if root == nil {
        return 0
    }
    leftHeight := getTreeHeight(root.Left)
    rightHeight := getTreeHeight(root.Right)
    if leftHeight == -1 || rightHeight == -1 || abs(leftHeight-rightHeight) > 1 {
        return -1
    }
    return max(leftHeight, rightHeight) + 1
}

func max(x, y int) int {
    if x > y {
        return x
    }
    return y
}

func abs(x int) int {
    if x > 0 {
        return x
    }
    return -x
}

相关文章

  • 面试题:平衡二叉树

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 知识点 平衡二叉树 Qiang的思路 平衡二叉树是指一个...

  • Leetcode 110 平衡二叉树

    平衡二叉树 题目 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每...

  • 二叉树2-平衡二叉树、完全二叉树、二叉树剪枝

    110.平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 一棵高度平衡二叉树定义为:一个二叉树每个节点 ...

  • [LeetCode]110. 平衡二叉树

    110. 平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个...

  • 力扣算法 - 平衡二叉树

    平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的...

  • LeetCode-110-平衡二叉树

    平衡二叉树 题目描述:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每...

  • 程序员面试经典chapter4 Trees and Graphs

    第一题 二叉树平衡检查 题目描述: 检查二叉树是否平衡,对于任意一个节点来说两个子树的高度差小于1题目给出的函数为...

  • Leetcode题解 - Easy - 4

    110- 平衡二叉树 问题 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一...

  • 剑指 offer:39、平衡二叉树

    39. 平衡二叉树 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 解题思路: 平衡二叉树:Wiki:在...

  • 110.平衡二叉树

    题目#110.平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为: 一个二...

网友评论

      本文标题:检查一个二叉树是否是平衡二叉树leecode111

      本文链接:https://www.haomeiwen.com/subject/aasfjktx.html