bool VerifySquenceOfBST(int* arr, int len)//判断序列是否为BST树的后序遍历序列
{
if (NULL == arr || len <= 0) return false;
int root = arr[len - 1];
int i = 0;
for (i; i < len - 1; ++i)//左子树的节点都小于root ,大于root的为右子树,先break掉
{
if (root < arr[i])
break;
}
for (int j = i; j < len - 1; ++j)//右子树的节点都大于root 若存在小于root则结束,否
{
if (root > arr[j])
return false;
}
bool left = true;
//判断左子树是否为二叉搜索树
if (i > 0)
{
left = VerifySquenceOfBST(arr, i);
}
bool right = true;
//判断右子树是否为二叉搜索树
if (i < len - 1)
{
right = VerifySquenceOfBST(arr + i, len - i - 1);
}
return left && right;
}
c语言判断序列是否为BST树的后续遍历序列
最新推荐文章于 2022-03-13 15:02:26 发布