commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kief Morris <>
Subject Re: [Collections][Submit] TreeNode and friends
Date Mon, 27 May 2002 08:33:24 GMT
Stephen Colebourne typed the following on 07:48 PM 5/26/2002 +0100
>> > > 4.  Must tree iterators be depth-first?  The ordered
>> > > traversal for a heap tree isn't depth-first.
>> >
>> > No, but depth first is the one I needed ;-)  There are two possibilities
>> > here,
>> > a) Add extra methods for different iteration types
>> > b) Remove the comment that specifies how the iteration is done.
>> I think, personally, for things like trees, either having
>> depthFirstIterator()
>> bredthFirstIterator()
>> or removing all iteration from the tree directly, and require
>> folks to do:
>> Iterator iter = new DepthFirstIterator( tree );
>> or
>> Iterator iter = new BredthFirstIterator( tree );
>> Just because there's no -default- way to iterate a tree, I don't
>> think having just a plain iterator() method is sufficient.
>I would rather keep the iterator on TreeNode. If there are only two standard
>ways to iterate then two methods would seem appropriate. But are there more
>than two ways??

I favor a single iterator() method on the interface which returns the nodes in an 
unspecified order. I'm ambivalent about having the specific breadth/depth iterator
methods on the Interface, but if it seems like there will be more than that, forget
it; keep just a single iterator() method and leave other options to implementations
rather than clutter the interface.

There's nothing wrong with having a plain iterator() method even if there's no
default way it needs to be implemented; other Collection (non-List) classes
have iterators whose return order is unspecified.


To unsubscribe, e-mail:   <>
For additional commands, e-mail: <>

View raw message