/ / Comment obtenir tous les nœuds feuilles d'un arbre? - java

Comment obtenir tous les nœuds feuilles d'un arbre? - java

Supposons que j'ai un noeud dans un arbre, comment puis-je obtenir tous les noeuds feuille dont l'ancêtre est ce noeud? J'ai défini le TreeNode comme ceci:

public class TreeNode<T>
{
/** all children of the node */
private List<TreeNode<T>> children = new ArrayList<TreeNode<T>>();
/** the parent of the node, if the node is root, parent = null */
private TreeNode<T> parent = null;
/** the stored data of the node */
private T data = null;

/** the method I want to implement */
public Set<TreeNode<T>> getAllLeafNodes()
{
Set<TreeNode<T>> leafNodes = new HashSet<TreeNode<T>>();
return leafNodes;
}
}

Réponses:

10 pour la réponse № 1

Utilisez la récursivité.

  • si le noeud lui-même est une feuille, retournez-le
  • sinon, renvoie tous les nœuds feuilles de ses enfants

Quelque chose comme ça (non testé):

public Set<TreeNode<T>> getAllLeafNodes() {
Set<TreeNode<T>> leafNodes = new HashSet<TreeNode<T>>();
if (this.children.isEmpty()) {
leafNodes.add(this);
} else {
for (TreeNode<T> child : this.children) {
leafNodes.addAll(child.getAllLeafNodes());
}
}
return leafNodes;
}