【问题标题】:Who is node's father (Graph and tree data structure)?谁是节点的父亲(图和树数据结构)?
【发布时间】:2018-01-19 14:05:23
【问题描述】:

我正在解决一些编程问题。您将获得一个具有 N 个节点和 N - 1 条边的图(树)。为了解决这个问题,我需要知道谁是这里的父亲。

什么是节点的父亲?好吧,例如我们有这棵树:1。节点B的父亲是节点F,节点E的父亲是节点D,等等。唯一没有父亲的节点是F。

由于 N

编辑:我需要知道这棵树中每个节点的父亲,忘了提到这个相关的事情。

【问题讨论】:

  • krrpffff...节点我是你的父亲...krrpfff...(抱歉无法抗拒)
  • 请出示您的代码。
  • 我实际上没有代码。我被困在最开始。我的第一个想法是每个节点都使用 dfs,但这太慢了
  • 只适用于二叉树吗?

标签: c++ c++11 graph c++14


【解决方案1】:

有一个简单的解决方案。只需做一个Depth first search。

如果你记得你来自哪里,你就知道当前节点的父节点。

【讨论】:

  • dfs 不是总是在左边吗?如果是这样,我将无法知道每个节点的父亲......糟糕我忘了提,对不起
  • @Marko Milenkovic - 你的意思是你想知道根节点?
  • 我已经知道根节点了。在我的问题中,它的索引为 1。对于所有与 1 连接的节点,我们可以说它们的父亲是 1。
  • @Marko Milenkovic - 呼吸优先搜索不会为您提供每个节点的父节点,但深度优先搜索总是从父节点到子节点。如果你记得你来自哪里,你会得到父母。
  • 我明白了,谢谢!那么,这项工作是否可行(tatko[i] 是 i 的父亲): void dfs(int x){ for (auto& i : e[x]){ if (i != tatko[x]){ tatko[i] = x; dfs(i); } } }
猜你喜欢
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 2010-10-05
  • 2014-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多