根据以下给出的逻辑,实现父子关系逻辑

时间:2019-07-07 16:46:21

标签: javascript reactjs typescript recursion parent-child

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

逻辑:

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具有A 子B。因此,A,B和C将不会列出。

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

请帮助我实现此逻辑。

1 个答案:

答案 0 :(得分:0)

假设每个节点最多有一个父节点,则应使用以下逻辑:

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
}