Disons que j'ai une liste de branches, comment trouver une liste d'arbres qui sont connectés ensemble? Le diagramme ci-dessous devrait illustrer mon point. L'entrée est une liste de branches dans un seul arbre, comme étiqueté, à savoir. 1
, 2
, 3
et ainsi de suiteÉtant donné une liste de branches, comment trouver une liste d'arbres qui sont connectés ensemble
1
A
Répondre
1
Le processus est le suivant:
- Créer une fonction qui accepte un nœud de l'arbre en tant que paramètre
- Si le nœud n'a pas d'enfant, imprime la valeur du noeud courant et retourne.
- Si le nœud a deux enfants, mettre fin à la liste actuelle des valeurs de nœud unique, récursif puis dans le noeud gauche, puis le nœud droit
- Si le nœud a un enfant, l'ajouter à la liste des valeurs contenues dans la arbre, puis recurse dans ce noeud.
- Continuer.
1
Selon l'image, il existe une solution très simple. Faisons une liste, avec des éléments, qui sont des listes du même type. La procédure s'appellera tree_lists (liste, arborescence). Tout ce que vous devez faire est:
- Regarder commune actuelle, vous ont le pointeur de la liste sur le premier élément de la liste.
- S'il y a plus d'un enfant dans le nœud actuel: itérer chaque sous-arbre , incrémenter pointeur de la liste et appelant
tree_lists (liste [i], current_subtree) où i est le pointeur de liste et current_subtree est Sous-arbre actuel =) - Si un seul enfant existe, ajoutez simplement ce joint à l'élément de liste actuel et passez à suivant.
- Bien sûr, les valeurs de liste et de pointeur de liste doivent être globales et modifiées en recurrence.
Questions connexes
- 1. Étant donné une liste de mots, créez un sous-ensemble de phrases avec eux
- 2. Comment récupérer une liste d'utilisateurs connectés/connectés dans .NET?
- 3. Étant donné un ensemble de points, trouver si l'un des trois points sont colinéaires
- 4. Étant donné System.Type T, désérialiser la liste <T>
- 5. Sous UNIX, comment trouver les utilisateurs qui se sont connectés hier ou avant
- 6. montre une liste des utilisateurs connectés via htaccess
- 7. Comment obtenir une liste de propriétés avec un attribut donné?
- 8. boost asio: maintenir une liste de clients connectés
- 9. LINQ Lambda - Trouver tous les ID dans une liste qui n'existe pas dans une autre liste
- 10. Comment trouver la ligne dans une liste
- 11. Comment trouver l'ID de ligne de datagridview, étant donné une valeur de ligne?
- 12. Comment trouver une liste de champs en double
- 13. Visual Studio: Comment obtenir une liste de fichiers dans un projet affecté par un ensemble de modifications donné?
- 14. Comment faire pour trouver tous les utilisateurs qui m'ont donné une autorisation Facebook spécifique?
- 15. Liste des esclaves connectés au maître - Hudson
- 16. jQuery: Étant donné un sélecteur, trouver uniquement ses éléments visibles
- 17. C# comment trouver une valeur dans une liste collection
- 18. Supprimer une sous-chaîne étant donné une NSRange
- 19. Comment trouver une clé/valeur spécifique (liste de propriétés)
- 20. Comment obtenir une liste de champs dans une contrainte unique
- 21. Étant donné une liste et un masque de bits, comment puis-je retourner les valeurs aux indices True?
- 22. 'Recadrer' une liste dans C#
- 23. Trouver le prochain jour sur une liste
- 24. Étant donné une fois, comment puis-je trouver l'heure il y a un mois
- 25. Trouver l'index d'une liste dans une boucle
- 26. Trouver une classe dans la liste
- 27. Comment commander une liste
- 28. Comment obtenir la liste des programmes connectés au socket Apache?
- 29. Comment récupérer une liste d'objets qui sont une propriété d'une classe avec JDOQL?
- 30. Étant donné une coordonnée x, y, je dois trouver tous les éléments html en dessous
L'entrée ou la sortie? La question semble être la liste de gauche ... mais si c'est l'entrée, c'est quelque chose que vous avez déjà. – cHao
@ CHao, L'entrée est une liste d'arbres, '1',' 2', '3' et ainsi de suite – Graviton
... k, l'entrée n'a pas beaucoup de sens pour moi. Dois-je supposer que tous les «arbres» sont réellement connectés (et font donc partie du même arbre)? Et si oui, pourquoi les transmettez-vous comme une liste de nœuds, plutôt que comme un seul arbre? – cHao