欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

剑指offer之二叉搜索树的后序遍历序列

程序员文章站 2022-05-20 13:52:50
...

题目描述:

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

bool VerifySquenceOfBST(int sequence[],int len)
{
	if(sequence == nullptr || len <= 0)
		return false;
	int root = sequence[len-1];
	int i = 0;
	for(;i < len-1;++i)//二叉树中左子树的结点小于根结点
	{
		if(sequence[i] > root)
			break;
	}
	int j = i;
	for(;j < len-1;++j)//二叉树中右子树的结点大于根结点
	{
		if(sequence[j] < root)
			return false;
	}
	bool left = true;
	if(i > 0)
		left = VerifySquenceOfBST(sequence,i);//判断左子树是不是二叉搜索树
	bool right = true;
	if(j < len-1)
		right = VerifySquenceOfBST(sequence+i,len-i-1);//判断右子树是不是二叉搜索树
	return (left && right);
}