剑指offer第55题:判断一个平衡二叉树
func isBalanced(root *TreeNode) bool {
res := dfs(root) != -1
return res
}
func dfs(root *TreeNode) int{
if root == nil{ return 0}
left_tree := dfs(root.Left)
if left_tree == -1{
return -1;
}
right_tree := dfs(root.Right)
if right_tree == -1{
return -1
}
if abs(left_tree,right_tree) <= 1{
return max(left_tree,right_tree) + 1
}
return -1;
}
func abs(i,j int)int{
if i >j {
return i - j
}
return j - i
}
func max(i,j int)int{
if i > j{
return i
}
return j
}
func isBalanced(root *TreeNode) bool {
if root == nil{
return true
}
if abs(dfs(root.Left),dfs(root.Right)) <= 1{
return isBalanced(root.Left) && isBalanced(root.Right)
}
return false
}
func dfs(root *TreeNode)int{
if root == nil{
return 0
}
left_tree := dfs(root.Left)
right_tree := dfs(root.Right)
return max(left_tree,right_tree) + 1
}
func max(i,j int)int{
if i > j{
return i
}
return j
}
func abs(i,j int)int{
if i > j{
return i - j
}
return j - i
}