J'ai une mise en œuvre de la structure de l'arbre qui ressemble à ceci:Comment afficher la position actuelle d'un nœud d'arbre
class Node {
let value: String
var parentNode: Node?
var childenNode = [Node]()
func appendNode(node: Node) {
childenNode.append(node)
node.parentNode = self.parentNode
}
func isLeaveNode(node: Node) -> Bool{
if node.childenNode.isEmpty {
return true
} else {
return false
}
}
init(value: String) {
self.value = value
}
}
Je veux avoir une fonction qui retourne le chemin qu'il a fallu pour arriver au noeud courant . Par exemple: disons que j'ai un noeud de congé node
et le chemin qu'il a fallu pour arriver à ce noeud de congé est Main Menu -> Setting -> User Options -> Set User Options
, alors je veux une fonction qui retourne ce chemin: E.g. func path(node: Node) -> path
. Comment puis-je l'implémenter?
J'ai essayé d'utiliser une boucle for-in
pour effectuer une boucle dans le nœud parent. Cependant, depuis Node
n'est pas conforme au protocole sequence
, cela ne peut pas être fait.
Merci beaucoup! Toute aide est la bienvenue!
boucle juste retour aux nœuds parents jusqu'à ce que le nœud parent est nul –
Oui, je l'ai essayé, mais depuis le noeud n'est pas conforme à 'protocole sequence', qui est impossible –
essayer quelque chose comme ceci: ' func path (noeud: Node) -> [Node] {return path.parentNode == nil? [self]: chemin (noeud: parentNode!) + [auto]} ' –