110. Balanced Binary Tree.go

判断二叉树是否是平衡二叉树
平衡二叉树的定义:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树

type TreeNode struct {
    Val   int
    Left  *TreeNode
    Right *TreeNode
}

func isBalanced(root *TreeNode) bool {
    if root == nil {
        return true
    }

    l := getHeight(root.Left)
    r := getHeight(root.Right)
    return l-r < 2 && r-l < 2 && isBalanced(root.Left) && isBalanced(root.Right)
}
func getHeight(root *TreeNode) int {

    if root == nil {
        return 0
    }

    return mymax(getHeight(root.Left), getHeight(root.Right)) + 1
}
func mymax(x, y int) int {
    if x > y {
        return x
    }
    return y
}

你可能感兴趣的:(110. Balanced Binary Tree.go)