【问题标题】:Optimal solution to find the leafs of a tree找到树的叶子的最佳解决方案
【发布时间】:2013-08-06 08:50:21
【问题描述】:

我有一个树状结构。我可以得到几条连接在一起并组成树的线。线由起点和终点组成。以下是 XML 格式的树中的一些示例数据。

<Skeleton>
   <Line StartX="384" StartY="135"  EndX="385" EndY="129"  /> 
   <Line StartX="384" StartY="137"  EndX="384" EndY="135"  /> 
   <Line StartX="384" StartY="138"  EndX="384" EndY="137"  /> 
   <Line StartX="384" StartY="139"  EndX="384" EndY="138"  /> 
   <Line StartX="383" StartY="144"  EndX="384" EndY="139"  /> 
   <Line StartX="383" StartY="147"  EndX="383" EndY="144"  /> 
    ...
</Skeleton>

这是树的图形表示:

我需要做的是提取这棵树上的叶子和连接点,如图所示:

我想找到一个关于复杂性和时间的优化算法来完成这项任务。

【问题讨论】:

标签: algorithm graph tree tree-search


【解决方案1】:
  1. 根据您的数据生成数学图(坐标是顶点的标签,数据中的每个line 都成为图中的一条边)。

  2. 定义你的树的root vertex

  3. 叶子都是不是root vertex的顶点,并且只连接到一个边

  4. 交界处是连接到至少 3 条边的所有顶点(在您的示例中)

【讨论】:

  • 感谢您的建议。因此,有了图之后,我可以使用一些搜索算法来找到叶子。
  • 为什么不简单的创建一棵树,做层序遍历,遍历除根节点以外的所有节点呢?为什么要取复杂的图根(虽然树也是图)
  • @AKS:正如你自己提到的'树也是一个图'。我看不出,为什么你认为使用图表比使用树更复杂。顺便问一下,在解析 XML 时如何创建树?在解析 XML 时,大多数时候已经解析的很可能不是树,因为我们无法对 XML 中的行顺序做出任何假设。
猜你喜欢
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 2020-04-12
相关资源
最近更新 更多