题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
链接:https://www.nowcoder.com/questionTerminal/8b3b95850edb4115918ecebdf1b4d222
来源:牛客网
如果改为从下往上遍历,如果子树是平衡二叉树,则返回子树的高度;如果发现子树不是平衡二叉树,则直接停止遍历,这样至多只对每个结点访问一次。
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
return getDepth(pRoot)!=-1;
}
private:
int getDepth(TreeNode* root){
if(root==NULL) return 0;
int left=getDepth(root->left);
if(left==-1) return -1;
int right=getDepth(root->right);
if(right==-1) return -1;
return abs(left-right) > 1 ? -1 : 1+max(left,right);
}
};