public List<TreeNode<N>> getLeaves() { List<TreeNode<N>> leaves = new ArrayList<>(); DepthFirstIterator it = this.new DepthFirstIterator(); while (it.hasNext()) { TreeNode<N> node = it.next(); if (node.isLeaf()) leaves.add(node); } return leaves; }