一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 866|回复: 8
收起左侧

5分钟前fb实习一面

[复制链接] |试试Instant~ |关注本帖
Cathy667 发表于 2016-11-11 07:22:42 | 显示全部楼层 |阅读模式

2016(10-12月) 码农类 博士 实习@Facebook - 内推 - 技术电面 |Otherfresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x

一个印度小哥大约晚了15分钟打来了电话,一开始问我要不要换时间,因为他晚了,我说都可以,结果就继续面了。
开始他做了一下自我介绍,说了一大堆他的项目,他也问了我自己做的项目,大约15分钟。
接着开始做题:
1. first bad version
口头run test case. From 1point 3acres bbs
2. 有点像LC 297,但是是BST,而且给出了一个preorder的list,没有#标识符表示空节点;之后我提出来如果没有标识符符好像没法知道是不是空节点......脑子抽了一下,应该用BST的性质;之后提示说可以每个节点加一个parent......
. 鍥磋鎴戜滑@1point 3 acres
最后一题真心不知道答得对不对,他最后说了一句没时间了,interesting solution。然后问了个问题就结束了。。。。。。

心里真是没底,求过啊。。。。。
. 1point 3acres 璁哄潧

补充内容 (2016-11-11 10:07):
第二题补充下,是要求从preorder list转化成BST树,return root

补充内容 (2016-11-17 00:58):
一面幸运的过了,二面希望一切顺利,大家加油!

评分

1

查看全部评分

wtcupup 发表于 2016-11-11 07:55:50 | 显示全部楼层
感觉第二题是这个链接里的高票答案 http://stackoverflow.com/questions/4611555/how-to-serialize-binary-tree
回复 支持 反对

使用道具 举报

wangyuesong2 发表于 2016-11-11 08:43:12 | 显示全部楼层
如果是BST的话,给了一个preorder的sequence是不是可以根据这个题https://leetcode.com/problems/verify-preorder-sequence-in-binary-search-tree/ leetcode255来做啊。
回复 支持 反对

使用道具 举报

Badger96 发表于 2016-11-11 09:54:11 | 显示全部楼层
请问楼主第二题要求出什么呢?是LC 255吗?
回复 支持 反对

使用道具 举报

 楼主| Cathy667 发表于 2016-11-11 10:08:45 | 显示全部楼层
Badger96 发表于 2016-11-11 09:54. 1point3acres.com/bbs
请问楼主第二题要求出什么呢?是LC 255吗?

还原成BST树,return root
回复 支持 反对

使用道具 举报

xueqi 发表于 2016-11-11 12:02:02 来自手机 | 显示全部楼层
Preorder的话,如果是aLR的话,all in L is less than a, all in R is bigger than a. Just recursive build left and right with L and R. Right?
回复 支持 反对

使用道具 举报

 楼主| Cathy667 发表于 2016-11-11 12:07:45 | 显示全部楼层
xueqi 发表于 2016-11-11 12:02
Preorder的话,如果是aLR的话,all in L is less than a, all in R is bigger than a. Just recursive buil ...

我是这么想的,写的也差不多是这样,不知道写没写对。。。。
回复 支持 反对

使用道具 举报

e5399014 发表于 2016-11-11 23:58:26 | 显示全部楼层
  1. package test;

  2. //A binary tree node
  3. class Node {

  4.         int data;
  5.         Node left, right;

  6.         Node(int d) {
  7.                 data = d;
  8.                 left = right = null;
  9.         }
  10. }. 鍥磋鎴戜滑@1point 3 acres

  11. class BinaryTree{
  12.        
  13.         // A recursive function to construct Full from pre[]. preIndex is used
  14.         // to keep track of index in pre[].
  15.         Node constructTreeUtil(int pre[], int lo, int hi) {. 1point 3acres 璁哄潧
  16.                
  17.                 // Base case. from: 1point3acres.com/bbs
  18.                 if (lo > hi) return null;. from: 1point3acres.com/bbs

  19.                 // The first node in preorder traversal is root. So take the node at
  20.                 // preIndex from pre[] and make it root, and increment preIndex
  21.                 Node root = new Node(pre[lo]);. 鍥磋鎴戜滑@1point 3 acres
  22.                 . 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  23.                 // If the current subarry has only one element, no need to recur
  24.                 if (lo == hi) return root;
  25. .鏈枃鍘熷垱鑷1point3acres璁哄潧
  26.                 // Search for the first element greater than root
  27.                 int i;
  28.                 for (i = lo; i <= hi; ++i) {. Waral 鍗氬鏈夋洿澶氭枃绔,
  29.                         if (pre[i] > root.data) break;
  30.                 }

  31.                 // Use the index of element found in preorder to divide preorder array in
  32.                 // two parts. Left subtree and right subtree
  33.                 root.left = constructTreeUtil(pre, lo + 1, i - 1);
  34.                 root.right = constructTreeUtil(pre, i, hi);. visit 1point3acres.com for more.

  35.                 return root;
  36.         }

  37.         // The main function to construct BST from given preorder traversal.
  38.         // This function mainly uses constructTreeUtil() 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  39.         Node constructTree(int pre[]) { 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  40.                 return constructTreeUtil(pre, 0, pre.length - 1);
  41.         }

  42.         // A utility function to print inorder traversal of a Binary Tree
  43.         void printInorder(Node node) {
  44.                 if (node == null) return;
  45.                 printInorder(node.left);.鐣欏璁哄潧-涓浜-涓夊垎鍦
  46.                 System.out.print(node.data + " ");
  47.                 printInorder(node.right);
  48.         }.1point3acres缃
  49. }

  50. public class test{
  51.         // Driver program to test above functions
  52.         public static void main(String[] args) {
  53.                 BinaryTree tree = new BinaryTree();
  54.                 int pre[] = new int[]{10, 5, 1, 7, 40, 50};
  55.                 Node root = tree.constructTree(pre);
  56.                 System.out.println("Inorder traversal of the constructed tree is ");
  57.                 tree.printInorder(root);
  58.         }

  59. }
复制代码
回复 支持 反对

使用道具 举报

鼓頔娜夫 发表于 2016-11-17 00:38:15 | 显示全部楼层
Cathy667 发表于 2016-11-11 12:07. from: 1point3acres.com/bbs
我是这么想的,写的也差不多是这样,不知道写没写对。。。。

感觉就是LC106的变种,只是对于BST来说,preorder就足够唯一的确定一个tree了
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-5 02:03

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表