传说中的谷歌招聘委员会成员之一,从幕后走出来,教你学系统设计!


一亩三分地论坛

 找回密码
 获取更多干活,快来注册
Babeltime游戏工作室招工程师、美术和策划
Tubi TV招安卓、前端和机器学习工程师
把贵司招聘信息放这里
查看: 2007|回复: 11
收起左侧

FB

[复制链接] |试试Instant~ |关注本帖
fadeflame 发表于 2016-10-14 03:44:11 | 显示全部楼层 |阅读模式

2016(7-9月) 码农类 硕士 全职@Facebook - 内推 - Onsite |Otherfresh grad应届毕业生

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
给两个binary tree, 判定if tree 2 is a subtree of tree 1.
面试官表示写recursive的没有问题,六七行搞定。。。

彼此扯淡很久,聊project和Front end神马的,对方 40% frondend, 60% backend, but the 40% part is much more frustrating...
Badger96 发表于 2016-10-14 13:57:25 | 显示全部楼层
recursion比较的话O(mn),inorder&preorder比较的话O(n),g4g上有相关文章讨论
回复 支持 1 反对 0

使用道具 举报

leixiang5 发表于 2016-10-14 03:45:45 | 显示全部楼层
....就只有一道题呀?..
回复 支持 反对

使用道具 举报

iPhD 发表于 2016-10-14 04:25:41 | 显示全部楼层
recursive是O(n2)那种解法吗?但这不是最优解呀,最优解是O(n),面试官也没说什么?
回复 支持 反对

使用道具 举报

hrl1991 发表于 2016-10-14 08:13:59 | 显示全部楼层
iPhD 发表于 2016-10-14 04:25
recursive是O(n2)那种解法吗?但这不是最优解呀,最优解是O(n),面试官也没说什么?

应该就是看tree2的root是不是在tree1里 如果不是bst只能recursion查tree1所有的node 应该就是o(n) n是tree1的node的个数
回复 支持 反对

使用道具 举报

iPhD 发表于 2016-10-14 08:28:51 | 显示全部楼层
hrl1991 发表于 2016-10-14 08:13
应该就是看tree2的root是不是在tree1里 如果不是bst只能recursion查tree1所有的node 应该就是o(n) n是tre ...

不是吧?应该是deep equal比较,不是看reference的,不然这题就没意义了。。。
回复 支持 反对

使用道具 举报

Raymomd 发表于 2016-10-14 08:54:35 | 显示全部楼层
    public boolean isSubtree(TreeNode a, TreeNode b) {
        if(a == null && b == null) return true;
        if(a == null || b == null) return false;
        if(a.val > b.val) {
            return isSubtree(a.left,b);.1point3acres缃
        } else if(a.val < b.val) {
            return isSubtree(a.right,b);
        } else {
            return isSubtree(a.left,b.left) && isSubtree(a.right,b.right);. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
        }   
    }

如果是deep equal,大概是这样吗?如果只是看reference,就是一般的search了-google 1point3acres

补充内容 (2016-10-15 02:30):
如果是binary tree, 那判断条件就改一下,不过也可以用递归做,
回复 支持 反对

使用道具 举报

hrl1991 发表于 2016-10-14 11:37:16 | 显示全部楼层
iPhD 发表于 2016-10-14 08:28
不是吧?应该是deep equal比较,不是看reference的,不然这题就没意义了。。。
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
也对.. 如果不是bst的话有O(n)的解法吗 类似dp?
回复 支持 反对

使用道具 举报

hrl1991 发表于 2016-10-14 11:37:52 | 显示全部楼层
Raymomd 发表于 2016-10-14 08:54
public boolean isSubtree(TreeNode a, TreeNode b) {
        if(a == null && b == null) return tr ...

题目好像没说是bst
回复 支持 反对

使用道具 举报

minggr 发表于 2016-10-14 12:09:39 | 显示全部楼层
hrl1991 发表于 2016-10-14 08:13
应该就是看tree2的root是不是在tree1里 如果不是bst只能recursion查tree1所有的node 应该就是o(n) n是tre ...

recursion是O(n*m)

看下面这个O(n)的解法,看了才恍然大悟,自已想死活想不出来,-google 1point3acres
其实就是binary tree的serialize啊,还是自已智商问题啊,脑筋就是转不过来

(F***,还是没有权限发链接,大家google下“Check if a binary tree is subtree of another binary tree”)
回复 支持 反对

使用道具 举报

zhangyanuuuuu 发表于 2016-10-14 12:17:56 | 显示全部楼层
楼上假设是binary search tree了吧,不是说binary tree而已么
回复 支持 反对

使用道具 举报

leixiang5 发表于 2016-10-14 12:39:19 | 显示全部楼层
做下Inorder and Preorder traversals...然后检查是不是substring..就好了吧..
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-9-22 00:06

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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