力扣题目链接
class Solution {
public:// 返回以该节点为根节点的二叉树的高度,如果不是平衡二叉树了则返回-1int 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;}
};
平衡二叉树是什么?
就是他们的左右根节点的高度差不能大于1
所以,这题的思路就很清晰了。
关键是,你知道如何递归求左右子树的高度吗?
其中的递归过程,自己要去一步一步搞懂。
if (leftHeight == -1) return -1;
我不太理解,return -1是什么意思。
代码随想录 (programmercarl.com)
去看看视频可能会更好理解一点~