由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - yahoo onsite
相关主题
回馈本版,新鲜店面,新题新气象FB 面经
请教个G题目热腾腾的 LinkedIn 电面题攒RP
谁能给个Serialization/Deserialization of a Binary Tree Java版完整code?一道google面试题
leetcode Runtime error : Flatten Binary Tree to Linked ListLowest common ancestor of two nodes of Binary Tree
F家phone interview的一道题攒个人品发碗F家面筋
Leetcode bst max path-----is this solution correct?关于leetcode上的一道题
Find the node with given value in binary tree in in-order问到G家题
求个java版本的binary tree serialization和deserialization脸家电话面试面筋
相关话题的讨论汇总
话题: node话题: rootnode话题: null话题: tail话题: linked
进入JobHunting版参与讨论
1 (共1页)
l****i
发帖数: 2772
1
今天onsite,前三个面试官都是三哥。
被第二个三哥问晕了。问了我3道题。有一题是一个DP,白板写了。其他2个问题,跪了。
1.
问:无限数据流里,sample出k个。
答:reservoir sampling
问:解释一下这个算法
答:blabla
问:这个算法取每个数据的概率不一样,不可以
答:这是个经典算法,有paper证明过这个
问:好,那你现在证明一下这个算法
没研究过这个算法的证明,当场跪了。三哥坚持reservoir sampling是错误的。没办法
,我给了另外一个解法,每个data算一个random score,用heap保持score高的k个。
2.
问:给你一个binary tree,换成linked list
答:我问,是普通的binary tree? 不是BST?
问:就是最普通的任意binary tree
答:可以inorder走一遍,转换成linked list,返回inorder的第一个node作为list的
head
问:变成linked list后,怎么reconstruct回原来的binary tree。要求in place。
答:!#%&(,跪了,我觉得无解。
最后问三哥,怎么能reconstruct回去,三哥说,你多看看网上的题目,你会学到很多
知识。。。。!#%&(。。。
g*********e
发帖数: 14401
2
1
可以用数学归纳法证明
2
binary tree serialize / deserialize leetcode有
l****i
发帖数: 2772
3
第2题不是那个意思。inplace flatten变为linkedlist,再变回去。不是普通的BT的
serialize、deserialize

【在 g*********e 的大作中提到】
: 1
: 可以用数学归纳法证明
: 2
: binary tree serialize / deserialize leetcode有

g*********e
发帖数: 14401
4

肯定是需要insert一些空node,三哥都叫你看网上题目了。也真赤裸裸 lol

【在 l****i 的大作中提到】
: 第2题不是那个意思。inplace flatten变为linkedlist,再变回去。不是普通的BT的
: serialize、deserialize

l****i
发帖数: 2772
5
这样不是inplace了。。。三哥要求constant space

【在 g*********e 的大作中提到】
:
: 肯定是需要insert一些空node,三哥都叫你看网上题目了。也真赤裸裸 lol

S******1
发帖数: 216
6

了。
哥们不想在微软了?

【在 l****i 的大作中提到】
: 今天onsite,前三个面试官都是三哥。
: 被第二个三哥问晕了。问了我3道题。有一题是一个DP,白板写了。其他2个问题,跪了。
: 1.
: 问:无限数据流里,sample出k个。
: 答:reservoir sampling
: 问:解释一下这个算法
: 答:blabla
: 问:这个算法取每个数据的概率不一样,不可以
: 答:这是个经典算法,有paper证明过这个
: 问:好,那你现在证明一下这个算法

l*********8
发帖数: 4642
7
1。 数学归纳法
2. 刚才想了下,这样可否:
binary tree转换成linked list时,按level遍历, right child指针指向next。
left指针没用,可以指向parent.
这样就可以从"linked list"恢复binary tree了。

了。

【在 l****i 的大作中提到】
: 今天onsite,前三个面试官都是三哥。
: 被第二个三哥问晕了。问了我3道题。有一题是一个DP,白板写了。其他2个问题,跪了。
: 1.
: 问:无限数据流里,sample出k个。
: 答:reservoir sampling
: 问:解释一下这个算法
: 答:blabla
: 问:这个算法取每个数据的概率不一样,不可以
: 答:这是个经典算法,有paper证明过这个
: 问:好,那你现在证明一下这个算法

c*******r
发帖数: 610
8
我今天也刚刚Onsite完,你面的什么组啊?
i*******n
发帖数: 114
9
第二题和我年初电面google的题目一样(也是印度人面的)
这个需要pass by reference。如果用C++做,就比较好做。如果用java,需要自定义一
个类,然后里面有一个成员变量带有node。下面的是我使用全局变量做的。
/**
Convert a binary tree
into a circular double linked list such that the linked list
elements are in the order of the in-order traversal result of the binary
tree.
**/
class Node{
int val;
Node left;
Node right;
}
public class BinaryTreeIntoDoubleLL{

/**
*
* return the head node of the converted double linked list
*
* @param rootNode
* @return
*/
public Node convertBinaryTreeIntoDoubleLL(Node rootNode){
if(rootNode == null){
return null;
}

visitAndConvert(rootNode);

/**
* now the rootNode becomes the middle node
*
* set the head and tail nodes
*/
Node head = rootNode;
Node tail = rootNode;
while(head.left != null) {
head = head.left;
}

while(tail.right != null) {
tail = tail.right;
}

head.left = tail;
tail.right = head;
return head;
}
/**
*
* global variable to keep the previously visited node
*
*/
Node prevVisitedNode = null;
private void visitAndConvert(Node node){

if(node == null){
return;
}

if(node.left != null){
visitAndConvert(node);
}

node.left = this.prevVisitedNode;
if(this.prevVisitedNode != null){
this.prevVisitedNode.right = node;
}

this.prevVisitedNode = node;

if(node.right != null){
visitAndConvert(node.right);
}
}

public static void main(String[] args){
BinaryTreeIntoDoubleLL sol = new BinaryTreeIntoDoubleLL();
Node rootNode = new Node();

sol.convertBinaryTreeIntoDoubleLL(rootNode);
}


}
l*********8
发帖数: 4642
10
楼主还需要从linked list restore binary tree。 如果只是double linked list的话:
class BinaryTreeToLinkedList {
public:
TreeNode *head, *tail;
BinearyTreeToLinkedList(TreeNode *root) : head(NULL), tail(NULL) {
convert(root);
}
private:
convert(TreeNode *curr) {
if (!curr) return;
convert(curr->left);
if (tail)
tail->right = curr;
else
head = curr;
curr->left = tail;
tail = curr;
convert(curr->right);
}
};

【在 i*******n 的大作中提到】
: 第二题和我年初电面google的题目一样(也是印度人面的)
: 这个需要pass by reference。如果用C++做,就比较好做。如果用java,需要自定义一
: 个类,然后里面有一个成员变量带有node。下面的是我使用全局变量做的。
: /**
: Convert a binary tree
: into a circular double linked list such that the linked list
: elements are in the order of the in-order traversal result of the binary
: tree.
: **/
: class Node{

l*********8
发帖数: 4642
11
重新想了一下之前第二题的思路。 觉得应该转换成linked list的时候,应该用pre
order遍历。

【在 l*********8 的大作中提到】
: 1。 数学归纳法
: 2. 刚才想了下,这样可否:
: binary tree转换成linked list时,按level遍历, right child指针指向next。
: left指针没用,可以指向parent.
: 这样就可以从"linked list"恢复binary tree了。
:
: 了。

R********r
发帖数: 48
12
感觉yahoo要被三哥占领了,走在campus里一水阿三
1 (共1页)
进入JobHunting版参与讨论
相关主题
脸家电话面试面筋F家phone interview的一道题
发几个面试题Leetcode bst max path-----is this solution correct?
如何求一个complete binary tree的nodes个数?Find the node with given value in binary tree in in-order
一个树,不一定是2叉树,让设计一个数据结构来serialize和 deserialize求个java版本的binary tree serialization和deserialization
回馈本版,新鲜店面,新题新气象FB 面经
请教个G题目热腾腾的 LinkedIn 电面题攒RP
谁能给个Serialization/Deserialization of a Binary Tree Java版完整code?一道google面试题
leetcode Runtime error : Flatten Binary Tree to Linked ListLowest common ancestor of two nodes of Binary Tree
相关话题的讨论汇总
话题: node话题: rootnode话题: null话题: tail话题: linked