LeetCode-110
方法:递归
class Solution {
public:
int getHeight(TreeNode* root) {
if (root == nullptr) {
return 0;
}
int leftHeight = getHeight(root->left); //左
if (leftHeight == -1) {
return -1;
}
int rightHeight = getHeight(root->right); // 右
if (rightHeight == -1) {
return -1;
}
if (abs(leftHeight - rightHeight) > 1) {
return -1;
}
return 1 + max(leftHeight, rightHeight); //中
}
bool isBalanced(TreeNode* root) {
return getHeight(root) != -1 ? true : false;
}
};
思路:既然是求高度,就是用到后序遍历,(区别于求深度,求深度则用到的是先序遍历)当然也可以层序遍历,以后序遍历的思想求一个结点的左右子树的高度,如果差值大于1返回-1,表示不是平衡二叉树。