由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - [Algo] 检查一个树是另一个的子树
相关主题
如何判断一个tree是另外一个tree的subtree?求教balanced binary tree的准确定义
判断一个树是不是另一个树的子树?微软面试的一道题
这个Binary Tree的题来看看有人了解并行算法么
EPI 题目分享一道面试题
二哥能说说非DP和DP的DFS tree的区别吗?Uni_value subtree problem
贴个树的老题目问一道题(1)
问一道n-ary tree 的题目发个题吧,自己想的
两个有点难度很有意思的题请教一个balanced tree的问题
相关话题的讨论汇总
话题: tree话题: subtree话题: 子树话题: hash话题: algo
进入JobHunting版参与讨论
1 (共1页)
d********w
发帖数: 363
1
bool isSubTree(Tree* large, Tree * small);
假设就是二叉树吧,想到一个思路,把两个树按先序和中序打印出来,然后查看是否是
substr,能证明这样是对么?或者还有什么其他思路?感觉树的查找是个挺难的问题,
之前我在工作中就遇到过在一个domtree中,如何比较树的相似度,
就是比如把网页按dom解析,形成一个树,判断两个网页的duplicate,可以转化成求这
两个树的相似度,这又有2个问题,如何做树的查找,如何计算相似。不知大家有没有
做过这方面研究的
它的一个简化版本就是这题
g*********s
发帖数: 1782
2
recursion.

【在 d********w 的大作中提到】
: bool isSubTree(Tree* large, Tree * small);
: 假设就是二叉树吧,想到一个思路,把两个树按先序和中序打印出来,然后查看是否是
: substr,能证明这样是对么?或者还有什么其他思路?感觉树的查找是个挺难的问题,
: 之前我在工作中就遇到过在一个domtree中,如何比较树的相似度,
: 就是比如把网页按dom解析,形成一个树,判断两个网页的duplicate,可以转化成求这
: 两个树的相似度,这又有2个问题,如何做树的查找,如何计算相似。不知大家有没有
: 做过这方面研究的
: 它的一个简化版本就是这题

i**********e
发帖数: 1145
3
这题没那么容易。
我想了想,似乎很难用 bottom dfs 来解。
top down dfs 肯定可以,但是效率没那么好(有很多重复的扫描)
还有,有一个要弄清楚的是 subtree 的定义。。。
根据 wikipedia 里 subtree 的定义,
A subtree of a tree T is a tree consisting of a node in T and all of its
descendants in T.
不知道你想的 subtree 是一个 tree 里面任何一小部分,或是所有子节点都必须吻合
才行?
一些常见面试题的答案与总结 -
http://www.ihas1337code.com

【在 d********w 的大作中提到】
: bool isSubTree(Tree* large, Tree * small);
: 假设就是二叉树吧,想到一个思路,把两个树按先序和中序打印出来,然后查看是否是
: substr,能证明这样是对么?或者还有什么其他思路?感觉树的查找是个挺难的问题,
: 之前我在工作中就遇到过在一个domtree中,如何比较树的相似度,
: 就是比如把网页按dom解析,形成一个树,判断两个网页的duplicate,可以转化成求这
: 两个树的相似度,这又有2个问题,如何做树的查找,如何计算相似。不知大家有没有
: 做过这方面研究的
: 它的一个简化版本就是这题

h**********c
发帖数: 4120
4
应该搜索树吧,
一边遍历一边hash,
g*********s
发帖数: 1782
5
u make a good point. i think all nodes must be identical.

【在 i**********e 的大作中提到】
: 这题没那么容易。
: 我想了想,似乎很难用 bottom dfs 来解。
: top down dfs 肯定可以,但是效率没那么好(有很多重复的扫描)
: 还有,有一个要弄清楚的是 subtree 的定义。。。
: 根据 wikipedia 里 subtree 的定义,
: A subtree of a tree T is a tree consisting of a node in T and all of its
: descendants in T.
: 不知道你想的 subtree 是一个 tree 里面任何一小部分,或是所有子节点都必须吻合
: 才行?
: 一些常见面试题的答案与总结 -

i**********e
发帖数: 1145
6
Yes, they must all be identical,
but the question i'm asking is:
tree A)
2
/ \
1 3
tree B)
3
/
2
/ \
1 3
/
4
tree A) could or could not be a subtree of tree B) depending on the
definition of "subtree".
According to wikipedia's definition, tree A) is NOT a subtree of tree B),
because there is an extra node(4) at the bottom, even all nodes match
exactly.
一些常见面试题的答案与总结 -
http://www.ihas1337code.com

【在 g*********s 的大作中提到】
: u make a good point. i think all nodes must be identical.
j*****u
发帖数: 1133
7
good point,如果子树的叶节点必须在原树中也是叶节点,可不可以这样:
原树和子树bottom->up算每个node的hash,这个hash function考虑到当前node的data和
location, i.e. hash(node)=f1(data),f2(hash(node.left)),f3(hash(node.right))
算hash是O(n)
然后foreach node,比较hash跟子树root的hash,也是O(n)

【在 i**********e 的大作中提到】
: Yes, they must all be identical,
: but the question i'm asking is:
: tree A)
: 2
: / \
: 1 3
: tree B)
: 3
: /
: 2

h**********c
发帖数: 4120
8
先查小树的高度,
查大树相同高度的全部节点,得若干个子树,
子树与小树hash 对比。
j***u
发帖数: 152
9
用DFS 如果小树是大树的子树 那么小树的开始和结束时间一定被包括在大树的开始和
结束时间内
T_start <= t_start <= t_end <= T_end
1 (共1页)
进入JobHunting版参与讨论
相关主题
请教一个balanced tree的问题二哥能说说非DP和DP的DFS tree的区别吗?
rebuild a tree from inorder and level order贴个树的老题目
贴一道老算法题问一道n-ary tree 的题目
问一个很简单的suffix tree问题。请指点。两个有点难度很有意思的题
如何判断一个tree是另外一个tree的subtree?求教balanced binary tree的准确定义
判断一个树是不是另一个树的子树?微软面试的一道题
这个Binary Tree的题来看看有人了解并行算法么
EPI 题目分享一道面试题
相关话题的讨论汇总
话题: tree话题: subtree话题: 子树话题: hash话题: algo