回复: 21
跳转到指定楼层
上一主题 下一主题
收起左侧

上周G电面,还在等回复

全局:

2017(10-12月) 码农类General 硕士 全职@google - Other - 技术电面  | | Other | 在职跳槽

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
上周电面,题目不难,边说边写code的,还没回复。
Problem:

You are given a binary tree and a function shouldBeErased(node to check whether a node should be erased. Erase all nodes that should be e
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
补充内容 (2017-11-13 15:40):
是周二,说错了

补充内容 (2017-11-15 07:39):
几分钟前终于收到邮件告诉我过了

评分

参与人数 1大米 +5 收起 理由
lalasparrow + 5 给你点个赞!

查看全部评分


上一篇:Akuna OA 第二套
下一篇:脸的电面
推荐
wojiushieyu 2017-11-28 23:44:25 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

推荐
 楼主| freegyp 2017-11-14 10:28:27 | 只看该作者
全局:
jason9263 发表于 2017-11-14 03:48
楼主什么解法呢?~
  1. class Solution(object):
  2.         def recCheck(self,node,fromRoot = True):
  3.                 if shouldBeErased(node):
  4.                         if node.left:
  5.                                 self.recCheck(node.left)
  6.                         if node.right:
  7.                                 self.recCheck(node.right)
  8.                 else:
  9.                         if fromRoot:
  10.                                 self.ans.append(node)
  11.                         if node.left:
  12.                                 self.recCheck(node.left,False)
  13.                                 if shouldBeErased(node.left):
  14.                                         node.left = None
  15.                         if node.right:
  16.                                 self.recCheck(node.right,False)
  17.                                 if shouldBeErased(node.right):
  18.                                         node.right = None

  19.         def solution(self,root):
  20.                 self.ans = []
  21.                 if root:
  22.                         self.recCheck(root)
  23.                 return self.ans
复制代码

补充内容 (2017-11-14 10:30):
我用的Python,不知道你习惯什么语言
回复

使用道具 举报

推荐
Urumic 2017-11-14 12:22:41 | 只看该作者
全局:
我想了一个BFS的做法,不知道对不对,写了一个大概的Java伪代码,大家帮我看看啊:

  1. public static List<TreeNode> deleteNodes(TreeNode root) {
  2.     List<TreeNode> res = new ArrayList<>();
  3.     Queue<TreeNode> queue = new LinkedList<>();
  4.     Queue<TreeNode> curLevel = new LinkedList<>();
  5.     Map<TreeNode, TreeNode> parentmap = new HashMap<>();
  6.     queue.offer(root);
  7.    
  8.     while (!queue.isEmpty()) {
  9.       TreeNode curNode = queue.poll();
  10.       
  11.       
  12.       TreeNode curParent = map.getOrDefault(curNode, null);
  13.       if (shouldDelete(curNode)) {
  14.         if (curParent != null) { // for parent
  15.           curParent.left = curParent.left == curNode ? null : curParent.left;
  16.           curParent.right = curParent.right == curNode ? null : curParent.right;
  17.         }
  18.         
  19.         map.delete(curNode);
  20.         
  21.         if (curNode.left != null) {
  22.           curLevel.offer(curNode.left);
  23.           curNode.left = null;
  24.         }
  25.         
  26.         if (curNode.right != null) {
  27.           curLevel.offer(curNode.right);
  28.           curNode.right = null;
  29.         }
  30.       } else {
  31.         // node with no parent is a root
  32.         if (curParent == null) {
  33.           res.add(curNode);
  34.         }
  35.         
  36.         parentmap.remove(curNode);
  37.         
  38.         if (curNode.left != null) {
  39.           curLevel.offer(curNode.left);
  40.           parentmap.put(curNode.left, curNode);
  41.         }
  42.         
  43.         if (curNode.right != null) {
  44.           curLevel.offer(curNode.right);
  45.           parentmap.put(curNode.right, curNode);
  46.         }
  47.       }
  48.       
  49.       
  50.       if (queue.isEmpty()) {
  51.         queue = curLevel;
  52.         curLevel = new LinkedList<>();
  53.       }
  54.       
  55.     }
  56.    
  57.     return res;
  58.   }
复制代码

补充内容 (2017-11-14 15:15):
第十二行手误啊,map -> parentmap
回复

使用道具 举报

🔗
 楼主| freegyp 2017-11-13 15:38:59 | 只看该作者
全局:
说错了。。不是上周,是周二。。
回复

使用道具 举报

🔗
lalasparrow 2017-11-13 16:09:37 | 只看该作者
全局:
想问下楼主,erase之后它的children怎么办呢..?
谢谢楼主..!
回复

使用道具 举报

🔗
 楼主| freegyp 2017-11-13 16:18:48 | 只看该作者
全局:
lalasparrow 发表于 2017-11-13 16:09
想问下楼主,erase之后它的children怎么办呢..?
谢谢楼主..!

如果这个node左右两个child都有并且都不能删,那么删了这个node以后左右两个子节点各自变成另外的tree的root,所以最后会形成多个tree的forest
回复

使用道具 举报

🔗
lalasparrow 2017-11-14 00:25:49 | 只看该作者
全局:
freegyp 发表于 2017-11-13 16:18
如果这个node左右两个child都有并且都不能删,那么删了这个node以后左右两个子节点各自变成另外的tree的r ...

好的,谢谢楼主!
回复

使用道具 举报

🔗
jason9263 2017-11-14 03:48:20 | 只看该作者
全局:
楼主什么解法呢?~
回复

使用道具 举报

🔗
liuchen1701 2017-11-14 11:25:39 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
 楼主| freegyp 2017-11-14 11:41:45 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
Urumic 2017-11-14 12:21:47 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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