题目:
class Solution {
public:
int getHeight(TreeNode* cur){ //递归函数返回的是以当前节点为根节点的高度。
if(!cur) return 0; //空节点的高度为0
int leftHeight = getHeight(cur->left); //取得左节点的高度
if(leftHeight==-1) return -1; //如果左右节点不是平衡二叉树了则返回-1
int rightHeight = getHeight(cur->right);
if(rightHeight==-1) return -1;
return abs(leftHeight-rightHeight)>1?-1: 1+max(leftHeight, rightHeight); //如果左右节点高度差大于1说明不是平衡二叉树,返回-1;如果是平衡二叉树,则计算当前节点为根节点的树的高度,即左右子树中的最大高度+1
}
bool isBalanced(TreeNode* root) {
return getHeight(root)==-1?false:true;
}
};
以上方法转自代码随想录
标签:rightHeight,return,cur,Offer,55,getHeight,二叉树,节点 From: https://www.cnblogs.com/fly-smart/p/17659391.html