您的位置:首页 > 其它

判断一个二叉树是否是平衡二叉树 Cracking the coding interview 4.1

2013-01-15 17:25 507 查看
平衡二叉树的定义是:任意节点的左子树的高度和右子树的高度之差小于等于1.

那么一个二叉树是平衡二叉树 当且仅当 (1,左子树是平衡二叉树, 2. 右子树是平衡二叉树; 3, 左右子树的高度之差小于等于1).

所以用递归的方法判断的话,递归函数就需要返回两个信息:是否平衡,树高度. 代码如下。

bool IsBalance(Node *pRoot, int & nDeepth)
{
if (pRoot == NULL)
{
nDeepth = 0;
return true;
}

int deepRight;
int deepLeft;
if (!IsBalance(pRoot->pRight, deepRight) ||
!IsBalance(pRoot->pLeft, deepLeft))
return false;
nDeepth = 1 + fmax(deepRight, deepLeft);
return abs(deepRight - deepLeft)<=1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: