一亩三分地论坛

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

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

FB

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

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

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

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

x
给两个binary tree, 判定if tree 2 is a subtree of tree 1.
面试官表示写recursive的没有问题,六七行搞定。。。
. From 1point 3acres bbs
彼此扯淡很久,聊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) {. from: 1point3acres.com/bbs
            return isSubtree(a.left,b);
        } 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了

补充内容 (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. 1point3acres.com/bbs
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)
.鏈枃鍘熷垱鑷1point3acres璁哄潧
看下面这个O(n)的解法,看了才恍然大悟,自已想死活想不出来,
其实就是binary tree的serialize啊,还是自已智商问题啊,脑筋就是转不过来-google 1point3acres

(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..就好了吧..
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-10 01:44

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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