输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思路分析:
由于未后序遍历,那么数组的尾部节点为根节点root。索引从0开始,序列小于root的都为左子树,后面的数都必须大于root,为右子树。
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
/*if(sequence.length==0)
return false;
for(int i=0;i<sequence.length;i++)
{
boolean sign=false;
for(int j=0;j<i;j++)
{
if(sequence[j]>sequence[i])
{
sign=true;
}
else if(sign)
{
return false;
}
}
}
return true;*/
int len=sequence.length;
if(len==0)
return false;
else if(len==1)
{
return true;
}else
{
int root=sequence[len-1];
int i=0;
while(i<len-1)
{
if(sequence[i]<root)
{
i++;
}
else
break;
}
if(i==len-1)
return true;
else
{
while(i<len-1)
{
if(sequence[i]<root)
{
return false;
}i++;
}
return true;
}
}
}
}