平衡二叉树
2022-01-11 / 2 min read
什么是平衡二叉树?
我们应该怎么去判断?

题目
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:true
示例 2:
输入:root = [1,2,2,3,3,null,null,4,4]
输出:false
示例 3:
输入:root = []
输出:true
思路
题目很简单,思路也很清晰,也就是我们去看树的高度差不大于1.我们只要依据这个条件去写代码就可以了
解题
func isBalanced(root *TreeNode) bool {
if root == nil{
return true
}
if (!isBalanced(root.Left)||!isBalanced(root.Right)){
return false
}
Left := getDepath(root.Left)+1
Right := getDepath(root.Right)+1
if (abs(Left-Right)>1){
return false
}
return true
}
func getDepath(root *TreeNode)int{
if root == nil{
return 0
}
return max(getDepath(root.Left),getDepath(root.Right))+1
}
func max(left,right int)int{
if left >right{
return left
}
return right
}
func abs(num int)int{
if num<0{
return -num
}
return num
}