LeetCode 110. 平衡二叉树
题目链接:LeetCode 110. 平衡二叉树
题意:
给定一个二叉树,判断它是否是高度平衡的二叉树。
解题思路:
1.递归法:
对于递归法,既然是求树的高度,则应该使用后序遍历的方式,
对于每个节点,求左右子树的高度,比较左右子树的高度差是否小于1,如果不满足,返回false,如果满足,返回左右子树高度最大值 + 1
递归法代码:
func isBalanced(root *TreeNode) bool {
h := getHeight(root)
if h == -1 {
return false
}
return true
}
// 返回以该节点为根节点的二叉树的高度,如果不是平衡二叉树了则返回-1
func getHeight(root *TreeNode) int {
if root == nil {
return 0
}
l, r := getHeight(root.Left), getHeight(root.Right)
if l == -1 || r == -1 {
return -1
}
if l - r > 1 || r - l > 1 {
return -1
}
return max(l, r) + 1
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
2.迭代法
迭代法比较难,这里就先跳过

浙公网安备 33010602011771号