二叉搜索树的前序遍历有以下特点:
如果出现递减序列,则是左子树,否则是右子树;
右子树一定是递增的
综上,我们可以通俗理解为“总体递增,局部递减”。
class Solution {
public:
bool verifyPreorder(vector<int>& preorder) {
if(preorder.empty()) return true;
stack<int> st;
int root=INT_MIN;
for(int num : preorder){
if(num<root) return false;
while(!st.empty()&&num>st.top()){
root = st.top();
st.pop();
}
st.push(num);
}
return true;
}
};