//判断当前序列是不是前序遍历结果
bool verifyNode(vector<int> &arr, int start, int last)
{
if (start == last)
return true;
int i = start + 1;
for (; i < last; ++i)
{
if (arr[i] > arr[start])
break;
}
if (i < last)
{
bool left = verifyNode(arr, start + 1, i - 1);
bool right = verifyNode(arr, i, last);
}
for (; i <= last; ++i)
{
if (arr[i] < arr[start])
return false;
}
return left && right;
}
//判断序列是不是二叉搜索树前序遍历结果
bool verifyTree(vector<int> &arr)
{
if (arr.empty())
return false;
return verifyNode(arr, 0, arr.size() - 1);
}
判断数组是不是二叉搜索树的前序遍历结果
最新推荐文章于 2022-08-04 13:55:04 发布