In addition to the correct Solution 1, taking in consideration the correct comment by Bill.
Maximum and minimum can only be the attribute of some sets where order relationship is defined. As we always deal with finite sets, maximum and minimum always exist, but, if the relationship defines the notion of "no less", naturally, more than one element could represent maximum or minimum, because two different nodes can be compared as "equal" according this definition. Such set could be the set of numeric values, but it could be nearly anything.
The criteria for comparison can be anything, but they should satisfy some set of axioms, or condition for this relationship. For example: the result of comparison should be constant (not depend on time, for example), the chain of ordered elements can not cycle: A > B > C and C > A should not be allowed. (I hope you understand that this relationship has nothing to do with parent-child relationship which defines you tree.)
All you need is to implement the interface
System.IComparable<Node>
for the type
Node
. You did not even show this type, but it can be
struct
or
class
. Please see:
http://msdn.microsoft.com/en-us/library/43hc6wht.aspx[
^].
—SA