以下逻辑必须实现,我无法继续进行下去,
逻辑:
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。
请帮助我实现此逻辑。
答案 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
}