【发布时间】:2013-11-06 14:19:02
【问题描述】:
给定一棵树 T 和一系列节点 S,对 S 的唯一限制是它是通过某种类型的递归完成的——也就是说,如果一个节点的所有祖先都已经出现,一个节点只能出现在 S 中,什么是确定 S 是广度优先访问、深度优先访问还是两者都不是的好算法?
蛮力方法是计算每个广度优先和深度优先序列,看看是否有任何与 S 相同的方法。有更好的方法吗?
如果我们不想要“是”或“否”的答案,而是要衡量距离怎么办?
更新 1 距离测量,我的意思是访问可能不是精确的 BFS,但它很接近(一些编辑可能会使其成为一个);我希望能够订购它们并说 BFS
更新 2 当然,对每个 BFS 或 DFS 进行暴力枚举可以回答这个问题;我想要更高效的东西。
【问题讨论】:
-
在广度优先遍历中,一个节点的所有直接子节点出现在任何后代之前。
-
定义“距离测量”
-
如果一个节点的任何祖先出现在它之前,那么它不是深度优先的,因为它是由出现在它之前的所有节点的孩子定义的(因此一个节点的所有祖先都出现在它之后) .
标签: algorithm search recursion tree