题目描述:
给定一个整数数组,你需要验证它是否是一个二叉搜索树正确的先序遍历序列。
你可以假定该序列中的数都是不相同的。
参考以下这颗二叉搜索树:
示例 1:
输入: [5,2,6,1,3]
输出: false
示例 2:
输入: [5,2,1,3,6]
输出: true
进阶挑战:
您能否使用恒定的空间复杂度来完成此题?
方法1:
主要思路:
(1)递归求解,时间复杂度过高;
class Solution {
public:
bool helper(vector<int>&preorder,int left,int right){
if(left>=right){
return true;
}
int mid=left+1;//找出左边界
while(mid<=right&&preorder[left]>preorder[mid]){
++mid