由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 看到的一道题,挺有意思
相关主题
贴个简单的面经Amazon的序列化二叉树电面题
关于BST traverse的复杂度问一道旧题
一道算法题讨论下面试题的难度分布?
请教大家一道“Programming Pearls" 上面的题目google phone screen
算法题:min heap inplace变 BST判断 bst 疑问
尘埃落定里面的矩形题问道amazon 面试题
问个binary search tree的问题两个P家电面面经
问一个数据结构的问题看似很简单的一个BST问题但就是错了!
相关话题的讨论汇总
话题: int话题: maxsk话题: minsk话题: var
进入JobHunting版参与讨论
1 (共1页)
m**********e
发帖数: 52
1
Given a list of numbers, determine whether it can represent the pre-order
traversal list of a binary search tree (BST).
这个除了重构二叉树,还有什么好的解法吗?
p*****r
发帖数: 1883
2
不用重构树,引文满足preorder只可能是left<=root<=right,所以就一路往前走,把
root放到栈里,看接下来三个是不是满足这个条件就行了。如果只剩两个,只可能是
left<=root,如果只剩一个就是root本身。用递归写一下就行了,几行吧。

【在 m**********e 的大作中提到】
: Given a list of numbers, determine whether it can represent the pre-order
: traversal list of a binary search tree (BST).
: 这个除了重构二叉树,还有什么好的解法吗?

k****i
发帖数: 128
3
有可能有左右子树为空的情况啊

【在 p*****r 的大作中提到】
: 不用重构树,引文满足preorder只可能是left<=root<=right,所以就一路往前走,把
: root放到栈里,看接下来三个是不是满足这个条件就行了。如果只剩两个,只可能是
: left<=root,如果只剩一个就是root本身。用递归写一下就行了,几行吧。

l**o
发帖数: 356
4
不知道我说的对不对
根为第一个数,一直往前走,碰到第一个比根大的数为右子树的根,继续往前走,如果
碰到比根小的,返回false。再检查他的左右子树是否满足bst
m**********e
发帖数: 52
5
跟我想的一样,但这样递归复杂度是n^2了,还不如重构快了

【在 l**o 的大作中提到】
: 不知道我说的对不对
: 根为第一个数,一直往前走,碰到第一个比根大的数为右子树的根,继续往前走,如果
: 碰到比根小的,返回false。再检查他的左右子树是否满足bst

b********0
发帖数: 62
6
那样也是nlgn吧

【在 m**********e 的大作中提到】
: 跟我想的一样,但这样递归复杂度是n^2了,还不如重构快了
t******i
发帖数: 35
7
下面代码好像可以跑过几个case, 就是用两个 minStack, maxStack,在 traverse
list
同时判断是否是valid BST.
bool listValidBSTHelper(stack &minsk, stack &maxsk, list::
iterator &it, list &l) {
if (it == l.end()) return true;
if (minsk.empty() || maxsk.empty()) return false;
if (*it <= minsk.top() || *it >= maxsk.top()) {
int val = maxsk.top();
maxsk.pop();
minsk.push(val);
return listValidBSTHelper(minsk, maxsk, it, l);
}
maxsk.push(*it);
it++;
if (false == listValidBSTHelper(minsk, maxsk, it, l)) return false;
if (false == listValidBSTHelper(minsk, maxsk, it, l)) return false;
return true;
}
bool isListValidBST(list &l) {
list::iterator it = l.begin();
stack minsk, maxsk;
minsk.push(INT_MIN);
maxsk.push(INT_MAX);
return listValidBSTHelper(minsk, maxsk, it, l);
}
b***e
发帖数: 1419
8
There is a simple O(n) algorithm:
var isPreOrder = function(arr) {
var stack = [];
var i = 0;
var largestSoFar;

while(i < arr.length) {
var l = stack.length;
if (l == 0 || arr[i] < stack[l-1]) {
stack.push(arr[i]);
i++;
} else {
var out = stack.pop();
if (largestSoFar == undefined || out >= largestSoFar) {
largestSoFar = out;
} else {
return false;
}
}
}
return true;
};

【在 m**********e 的大作中提到】
: Given a list of numbers, determine whether it can represent the pre-order
: traversal list of a binary search tree (BST).
: 这个除了重构二叉树,还有什么好的解法吗?

q****o
发帖数: 6
9
想了一下,想明白了。blaze大神好牛

【在 b***e 的大作中提到】
: There is a simple O(n) algorithm:
: var isPreOrder = function(arr) {
: var stack = [];
: var i = 0;
: var largestSoFar;
:
: while(i < arr.length) {
: var l = stack.length;
: if (l == 0 || arr[i] < stack[l-1]) {
: stack.push(arr[i]);

z***b
发帖数: 127
10
他这个代码是啥意思啊?能详细说下嘛?

【在 q****o 的大作中提到】
: 想了一下,想明白了。blaze大神好牛
r****7
发帖数: 2282
11
大哥,你能举一个不能represent preorder BST的list么。。。
是不是要balanced?

【在 m**********e 的大作中提到】
: Given a list of numbers, determine whether it can represent the pre-order
: traversal list of a binary search tree (BST).
: 这个除了重构二叉树,还有什么好的解法吗?

b********0
发帖数: 62
12
我觉得不像O(n)...

【在 b***e 的大作中提到】
: There is a simple O(n) algorithm:
: var isPreOrder = function(arr) {
: var stack = [];
: var i = 0;
: var largestSoFar;
:
: while(i < arr.length) {
: var l = stack.length;
: if (l == 0 || arr[i] < stack[l-1]) {
: stack.push(arr[i]);

e*******i
发帖数: 56
13
@Blaze. ur code is wrong.
2, 3, 1 can NOT be preorder of a BST. But ur code returns true.
b***e
发帖数: 1419
14
Edge case. Add an infinity to the end of the input array and you'll be all
set. I'll modify the code anyways.

【在 e*******i 的大作中提到】
: @Blaze. ur code is wrong.
: 2, 3, 1 can NOT be preorder of a BST. But ur code returns true.

1 (共1页)
进入JobHunting版参与讨论
相关主题
看似很简单的一个BST问题但就是错了!算法题:min heap inplace变 BST
从tree的post order traversal和pre,能否build这个tree?尘埃落定里面的矩形题
BST面试题问个binary search tree的问题
GOOG phone interview question问一个数据结构的问题
贴个简单的面经Amazon的序列化二叉树电面题
关于BST traverse的复杂度问一道旧题
一道算法题讨论下面试题的难度分布?
请教大家一道“Programming Pearls" 上面的题目google phone screen
相关话题的讨论汇总
话题: int话题: maxsk话题: minsk话题: var