您的位置:首页 > 产品设计 > UI/UE

[LeetCode255]Verify Preorder Sequence in Binary Search Tree

2015-11-25 11:53 555 查看
Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary search tree.

You may assume each number in the sequence is unique.

Follow up:
Could you do it using only constant space complexity?

Hide Company Tags Zenefits
Hide Tags Tree Stack
Hide Similar Problems (M) Binary Tree Preorder Traversal


preorder: (root)left, right.

BST: LEFT<(=) ROOT

bool verifyPreorder(vector<int>& preorder) {
stack<int> stk;
int low = INT_MIN;
for(int n : preorder){
if(n<low) return false;
while(!stk.empty() && n > stk.top()){
low = stk.top();
stk.pop();
}
stk.push(n);
}
return true;
}


follow up question 问能不能O(1) space?

O(1)的做法让我看到了Bloomberg面试我的stable sort。。。

bool verifyPreorder(vector<int>& preorder) {
int low = INT_MIN, i = -1;
for(int n : preorder){
if(n < low) return false;
while(i>=0 && n > preorder[i]) low = preorder[i--];
preorder[++i] = n;
}
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode