题目:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回 false。假设输入的数组的任意两个数字都互不相同。
代码:
#include <iostream>
#include<vector>
using namespace std;bool isposter(vector<int>& v,int start,int end){if(start>=end-1)return true;int mark=v[end];int i=end-1;for(;v[i]>mark&&i>=start;i--);int j=i;for(;v[j]<mark&&j>=start;j--);if(j!=start-1)return false;bool b1=isposter(v,start,i);bool b2=isposter(v,i+1,end-1);return b1&&b2;
}
int main(){vector<int> v={4,6,7,9,11,10,8};bool b=isposter(v,0,v.size()-1);cout<<b<<endl;return 0;
}
思路:
按照后序遍历的特点,想下思路,写成递归形式