java - How to get all leaf nodes of a tree? -


suppose have node in tree, how can leaf nodes ancestor node? have defined treenode this:

public class treenode<t> {     /** children of node */     private list<treenode<t>> children = new arraylist<treenode<t>>();     /** parent of node, if node root, parent = null */     private treenode<t> parent = null;     /** stored data of node */     private t data = null;      /** method want implement */     public set<treenode<t>> getallleafnodes()     {         set<treenode<t>> leafnodes = new hashset<treenode<t>>();         return leafnodes;     } } 

use recursion.

  • if node leaf, return it
  • otherwise, return leaf-nodes of children

something (not tested):

public set<treenode<t>> getallleafnodes() {     set<treenode<t>> leafnodes = new hashset<treenode<t>>();     if (this.children.isempty()) {         leafnodes.add(this);     } else {         (treenode<t> child : this.children) {             leafnodes.addall(child.getallleafnodes());         }     }     return leafnodes; } 

Comments