I've seen a lot of questions (How to print binary tree diagram?) about how to print out a Tree by level and they all seem to be using nodes, but in the main they define each node and give it specific pointers by hand...I'm looking for a way to do the same thing, print out a tree by level, but you're given a TreeSet of type Integer (e.g. {3,12,28,40,41,58,83}), and you don't know what's going to be in it until runtime.
For simplicity, output would look something like this:
40
12 58
3 28 41 83
With or without the use of Nodes is fine, but I'd be interested to see a version without them.
EDIT:
To clarify, I'm talking about java.util.TreeSet.
So I've been working on this since I posted it, and I came up with a method I call getRoot which takes a TreeSet<Integer> as a parameter and returns an Integerwhich is the middle of the Tree. So for instance if you called it on the example tree, it would return 40.
So now I'm thinking there's probably a way to recursively do what I'm talking about, by calling getRoot on sub trees, e.g. tailSet and headSet of a tree, if that makes any sense. I'm having trouble making it follow through every branch of the tree, however. My code so far:
public TreeSet<Integer> recursivePlease(TreeSet<Integer> t){
if (t.size()<=1){ //base case
System.out.println(t.first());
return t;
}else{
System.out.println(getRoot(t));
return recursivePlease((TreeSet<Integer>) t.headSet(getRoot(t)));
}
}
and this...works. But it just prints the left side of the tree. Any help on making this method print the whole tree, or other ideas entirely, are greatly appreciated.
java.util.TreeSetor your own tree set implementation? In the latter case, what does it look like?java.util.TreeSet. And as for your comment about encapsulating the tree creation -- I'm kind of new to java and I'm not really sure what that means. Could you explain more? thanks!!java.util.TreeSetencapsulates aNavigableMapwhich probably encapsulates a tree somewhere. So getting to know the structure of that tree — is probably either hard or impossible, sorry. I don’t think you’ll even find out which element is at the root (that is, should be printed in the first line).