package main
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
*
* @param pRoot TreeNode类
* @return bool布尔型
*/
func IsBalanced_Solution( pRoot *TreeNode ) bool {
if pRoot == nil {
return true
}
return abs(dfs(pRoot.Left) - dfs(pRoot.Right)) <= 1 && IsBalanced_Solution(pRoot.Left) && IsBalanced_Solution(pRoot.Right)
}
func dfs (node *TreeNode) int {
if node == nil {
return 0
}
return max(dfs(node.Left), dfs(node.Right)) + 1
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
func abs(x int) int {
if x < 0 {
return -1 * x
}
return x
}