Tree 为“寻找一个词”;“压平一棵树”;

Tree 为“寻找一个词”;“压平一棵树”;,tree,Tree,我想知道是否有一个现有的词来描述我目前正在使用的流程。我想称之为“压平一棵树”,但我觉得一定有更好的词或短语 输入: |--D --B | |--C | A-E | | |--G --F |--H 输出: [ [A, B, D] [A, B, C] [A, E] [A, F, G] [A, F, H] ] 这个过程有一个确定的名称吗?您需要一个深度优先搜索来捕获从根到叶的每条路径 伪代码: global allPaths = [] R = root currentPa

我想知道是否有一个现有的词来描述我目前正在使用的流程。我想称之为“压平一棵树”,但我觉得一定有更好的词或短语

输入:

  |--D
--B
| |--C
|
A-E
|
| |--G
--F
  |--H
输出:

[ [A, B, D]
  [A, B, C]
  [A, E]
  [A, F, G]
  [A, F, H] ]

这个过程有一个确定的名称吗?

您需要一个深度优先搜索来捕获从根到叶的每条路径

伪代码:

global allPaths = []
R = root
currentPath = []
findPaths(R, currentPath)

findPaths(R, currentPath){
if R has no children,
allPaths.add( currentPath )

else
for each child C in R:
findPaths(C, currentPath + R)
}

我认为您只是在遍历树,同时保留到当前节点的路径。访问叶时,打印叶的完整路径


我认为没有具体的名称,但它与非常简单的遍历没有太大区别。

根据情况,水合(或脱水)怎么样?

似乎是最好的。因为事实上,如果你注意到你的新结构,你就有多余的数据,它看起来会直接映射到概念上的想法。

那么“链锯”路径枚举呢

DFS遍历

还是我最喜欢的


树木排列

我认为它是树的一部分。

是的,它被称为序列化

如果输入是树,输出是引用的列表列表,那么您实际上不是在为流程寻找短语,而是在为您调用的子例程寻找名称。这样一个子例程的名称应该是它返回内容的描述


如何
RootPathsOfLeaves
?或者对其进行一些重新排列…

我刚刚看到一篇关于“”的wiki文章,它使用的术语是“路径压缩”

摘录:

。。。 第二个改进称为path 压缩,是压扁的一种方式 树的结构 在上面使用Find。这个想法是 在访问根目录的过程中访问的每个节点 节点也可以直接连接 到根节点;他们都有共同的爱好 同一位代表。为此,, 当Find递归地向上遍历 树,它会更改每个节点的父节点 引用指向它所属的根 建立生成的树非常复杂 拉平,加快未来运营 不仅在这些元素上,而且在 直接或间接引用它们的 间接地


是的,但是对于返回路径数组的函数是否有一个词?很可能没有。你正在“找到通向树叶的所有道路”。我想你一个字也说不出来。它不是路径列表。它是根onlyRootedpathlist中的路径列表。我可以整天都这样做。:)我不确定教科书是否会列出这一点,但对于实际提交的“名称”来说+1:-)它看起来确实像是所有路径的枚举,因此“路径枚举”似乎是合适的。+1-语言对于表达想法很重要,值得一试。