荣誉版主
- 积分
- -2403
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2010-5-4
- 最后登录
- 1970-1-1
|
int _inner_get_max(TREE_NODE* pRoot, int& nLow, int& nHigh, int& nCurLargest)
{
assert(NULL != pRoot);
nLow = nHigh = pRoot->nVal;
int nRet = 1;
if (NULL != pRoot->pLft)
{
int nTmpLow, nTmpHigh;
int nSize = _inner_get_max(pRoot->pLft, nTmpLow, nTmpHigh, nCurLargest);
if (pRoot->nVal >= nTmpHigh)
{
nRet += nSize;
nLow = nTmpLow;
}
}
if (NULL != pRoot->pRgt)
{
int nTmpLow, nTmpHigh;
int nSize = _inner_get_max(pRoot->pRgt, nTmpLow, nTmpHigh, nCurLargest);
if (pRoot->nVal <= nTmpLow)
{
nRet += nSize;
nHigh = nTmpHigh;
}
}
if (nRet > nCurLargest) nCurLargest = nRet;
return nRet;
}
int GetMaxBSTSize(TREE_NODE* pRoot)
{
if (NULL == pRoot) return NULL;
int nCurLargest = 1;
int nLow, nHigh;
_inner_get_max(pRoot, nLow, nHigh, nCurLargest);
return nCurLargest;
} |
|