由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 面试题
相关主题
分享一道面试题amazon on-site interview
MS面试题这种解法对吗?merge two BST
贡献道M 家 onsite 面试题recovery BST 不考虑相同值的情况么?
BST面试题ms面试题
Lowest Common Ancestor of multiple nodes in a binary tree问一道amazon面试题
问个题一道非常伪善的面试题
这个Binary Tree的题来看看请教linked list, 删除最后一个节点
请教一个BST找Median的题目我又来发面经了,这次是G和Bloomberg
相关话题的讨论汇总
话题: int话题: return话题: root话题: mp话题: invalid
进入JobHunting版参与讨论
1 (共1页)
y****n
发帖数: 192
1
今天又做coding面试了,上来就要写个函数 返回二叉排序树的第k个最小的node。
我写了一半,感觉不对劲。请大侠赐教。
y*******g
发帖数: 6599
2
要写的话肯定是in -order到一个数组 最好写吧

【在 y****n 的大作中提到】
: 今天又做coding面试了,上来就要写个函数 返回二叉排序树的第k个最小的node。
: 我写了一半,感觉不对劲。请大侠赐教。

M***0
发帖数: 1180
3
其实就是把这个BST改成单链表,一样的程序
y****n
发帖数: 192
4
哎,我知道应该使用中序遍历,但有点忘了。然后又在考虑quickselect,然后就傻了。

【在 y*******g 的大作中提到】
: 要写的话肯定是in -order到一个数组 最好写吧
M***0
发帖数: 1180
5
pre-order吧,怎么会是in-order
网上有现成的把bst转成sorted link list的程序,拿来改一下,加个计数器就是。不
用额外space
y*******g
发帖数: 6599
6
in-order得到排序的数组,,这样要extra space 不过写起来肯定最快最不容易错了

【在 M***0 的大作中提到】
: pre-order吧,怎么会是in-order
: 网上有现成的把bst转成sorted link list的程序,拿来改一下,加个计数器就是。不
: 用额外space

M***0
发帖数: 1180
7
ft,我把名字搞反了
k***g
发帖数: 75
8
不需要另外的数组,就数访问过几个node了,访问到第k个就是要找到。

【在 y*******g 的大作中提到】
: in-order得到排序的数组,,这样要extra space 不过写起来肯定最快最不容易错了
y*******g
发帖数: 6599
9
赞, 正解

【在 k***g 的大作中提到】
: 不需要另外的数组,就数访问过几个node了,访问到第k个就是要找到。
g*******y
发帖数: 1930
10
如果你知道每个子树的元素个数,那么就是个很简单的二分查找。
可以把算子树元素个数的递归算法,跟查找kth node的算法合并在一起。
#define MP(a,b) make_pair((a),(b))
#define INVALID 0
pair find(Node *root, int k){ //return {count, kth element}
if(k<=0) return (k-1,INVALID);
if(root == 0) return MP(0,INVALID);
pair l,r;
l = find(root->left, k);
if(l.first == k) return l;
if(l.first == k-1) return MP(k,root->data);
int k2 = k-1-l.first;
r = find(root->right, k2);
if(r.first == k2) return (k, r.second);

【在 y****n 的大作中提到】
: 今天又做coding面试了,上来就要写个函数 返回二叉排序树的第k个最小的node。
: 我写了一半,感觉不对劲。请大侠赐教。

y****n
发帖数: 192
11
我就是因为这样想才走了弯路。。。

【在 g*******y 的大作中提到】
: 如果你知道每个子树的元素个数,那么就是个很简单的二分查找。
: 可以把算子树元素个数的递归算法,跟查找kth node的算法合并在一起。
: #define MP(a,b) make_pair((a),(b))
: #define INVALID 0
: pair find(Node *root, int k){ //return {count, kth element}
: if(k<=0) return (k-1,INVALID);
: if(root == 0) return MP(0,INVALID);
: pair l,r;
: l = find(root->left, k);
: if(l.first == k) return l;

1 (共1页)
进入JobHunting版参与讨论
相关主题
我又来发面经了,这次是G和BloombergLowest Common Ancestor of multiple nodes in a binary tree
一道微软题问个题
一道G家题目这个Binary Tree的题来看看
Rebuild BST using pre-order travesal请教一个BST找Median的题目
分享一道面试题amazon on-site interview
MS面试题这种解法对吗?merge two BST
贡献道M 家 onsite 面试题recovery BST 不考虑相同值的情况么?
BST面试题ms面试题
相关话题的讨论汇总
话题: int话题: return话题: root话题: mp话题: invalid