版权声明:本博客可任意转载,不用通知 https://blog.csdn.net/hbkzhu13579/article/details/83863254
链接
牛客:二叉搜索树的后序遍历序列
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思路
后序遍历数字的顺序小大中,这里面的小和大其实是子树的序列,中是单个数字,小和大又可以再分小大中,所以后序遍历的结果有什么规律呢?就是说每个数字的前面的数字从左向右一定是先大于这个数字再小于这个数字,满足条件的就是二叉搜索树的后序遍历的结果。
代码
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
int length = sequence.length;
if(length==0)
return false;
int i = 0;
length--;
while(length != 0)
{
while(sequence[i] < sequence[length])
{
i++;
}
while(sequence[i] > sequence[length])
{
i++;
}
if(i < length)
return false;
i = 0;
length--;
}
return true;
}
}