您的位置:首页 > 其它

判断整数序列是否是二叉查找树的后序遍历

2015-08-26 22:45 239 查看
      这是一道面试题,解题的代码如下(我这里把有重复节点的序列排除了,这里的二叉树不允许有相同值得节点):

bool JudgeListIsBSTreePostOrder(int* iArray, int nLeft, int nRight)
{
if (nLeft == nRight)
{
return true;
}
int nMidValue = iArray[nRight];
int nSubLeft = nLeft;
int nSubRight = nRight;
for (int i = nLeft; i < nRight; i++)
{
if (iArray[i] > nMidValue)
{
nSubRight = i;
break;
}
else if(iArray[i] == nMidValue)
{
return false;
}
}
if (nSubRight > nSubLeft)
{
if (JudgeListIsBSTreePostOrder(iArray, nSubLeft, nSubRight-1) == false)
{
return false;
}
}

//如果到尾部了,则无需检查右子树了
if (nSubRight == nRight)
{
return true;
}

nSubLeft = nSubRight;
nSubRight = nRight-1;
for (int i = nSubLeft; i < nRight; i++)
{
if (iArray[i] <= nMidValue)
{
return false;
}
}
return JudgeListIsBSTreePostOrder(iArray, nSubLeft, nSubRight);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: