Nochmal, etwas ausführlicher...
In dem angefügten Bild siehst Du (nochmal) einen vollständigen binären Suchbaum für drei Münzen (die Zahlen dienen nur zur Unterscheidung der Münzen).
Der Vorteil von Bäumen ist, dass sie eine nette Eigenschaft besitzen: In einem Baum ist jeder Knoten Wurzel eines Baums (Rekursion).
Den Gesamtbaum habe ich mal gestrichelt umrahmt. Dieser hat die Wurzel 1 und zwei Kindknoten, die ihrerseits Wurzeln von Teilbäumen sind, die im Bild rot eingezeichnet sind.
Wenn Du einen Baum nach dem besten Ergebnis "fragst", wird die Frage vom Wurzelknoten beantwortet, der die Frage (ggf. zum Teil) von seinen Kinder beantworten lässt. Der gestrichelte Baum beantwortet die Frage, in dem Knoten 1 die Frage auch(!) an die roten Bäume weitergibt. Dessen Wurzelknoten geben die Frage wieder an ihre Kinder weiter usw.
Einziges Problem ist jetzt, sich zu überlegen, wie die Frage nach dem besten Ergebnis
allgemein für einen Knoten in einem solchen Suchbaum beantwortet werden kann. Dann bist Du fast fertig. Bei der Definition des "besten Ergebnis" solltest Du nicht von Anfang an zu viel wollen. Wenn Du das hast, ist es fast schon ein Kinderspiel, das in Java auf Deine Liste anzuwenden.