【问题标题】:Implement Parent-Child relationship logic based on the logic given below根据下面给出的逻辑实现父子关系逻辑
【发布时间】:2019-07-07 16:46:21
【问题描述】:

以下逻辑必须实现,我无法继续,

逻辑:

A has a child B 
B has a child C 
C has a child D 
D doesn’t have any child 
E doesn’t have any child

在选择任何父级时,应在列表中添加该特定父级的潜在子级列表。

对于上述场景,期望的输出如下图,

在选择父 A 时,子列表包含 B、C、D 和 E.

在选择父 B 时,子列表包含 C、D 和 E。 A 不能是 B 的孩子,因为 B 已经是 A 的孩子,因此不会列出 A。

在选择父 C 时,子列表包含 D 和 E。 B 不能是 C 的孩子,因为 C 已经是 B 的孩子,A 不能是 C 的孩子,因为 B 是流 A 的孩子。因此 A 和 B 不会 列出来。

在选择父 D 时,子列表 E。 C不能是D的孩子,因为D已经是C的孩子,B不能是D的孩子,因为B是C的孩子,A不能是D的孩子,因为A有一个 子 B。因此不会列出 A、B 和 C。

在选择 E 时,子列表包含 A、B、C 和 D。

请帮我实现这个逻辑。

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 我试过递归,我很确定代码是错误的。这就是我没有在这里添加代码的原因。
  • 这就是 SO 通常的工作方式。你向人们展示你正在尝试什么,他们会建议修复。这不是代码编写服务。

标签: javascript recursion parent-child


【解决方案1】:

假设每个节点至多有一个父节点,以下逻辑应该可以完成这项工作:

var allNodes = [A, B, C, D, E]

function onNodeSelect(node) {
  var possibleChildren = allNodes
  possibleChildren.remove(node)

  var currentNode = node
  while (currentNode.hasParent) {
    currentNode = node.parent
    possibleChildren.remove(currentNode)
  }

  return possibleChildren
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多