面试题39:输入一颗二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中节点的左右子树的深度相差不超过1,那么它就是一颗平衡二叉树
//判断二叉树是不是平衡树
bool isBalanced(BinaryTreeNode* pRoot,int &height){
if(pRoot==NULL){
height=0;
return true;
}
int leftHeight;
int rightHeight;
bool left = isBalanced(pRoot->m_pLeft,leftHeight);
bool right = isBalanced(pRoot->m_pRight,rightHeight);
if(left&&right){
height=leftHeight>rightHeight?leftHeight:rightHeight;
if(abs(leftHeight-rightHeight)<=1)
return true;
}
return false;
}
参考:《剑指offer》 何海涛著