# 题目
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:true
110. 平衡二叉树 - 力扣(LeetCode)
# 分析
递归
class Solution { | |
public: | |
// 返回以该节点为根节点的二叉树的高度,如果不是平衡二叉树了则返回 - 1 | |
int getHeight(TreeNode* node) { | |
if (node == NULL) { | |
return 0; | |
} | |
int leftHeight = getHeight(node->left); | |
if (leftHeight == -1) return -1; | |
int rightHeight = getHeight(node->right); | |
if (rightHeight == -1) return -1; | |
return abs(leftHeight - rightHeight) > 1 ? -1 : 1 + max(leftHeight, rightHeight); | |
} | |
bool isBalanced(TreeNode* root) { | |
return getHeight(root) == -1 ? false : true; | |
} | |
}; |