vabbè... ma dato che l'albero non è ordinato rispetto ai pezzi venduti devi per forza visitarlo tutto per essere sicuro di trovare il massimo.
Quindi l'unico modo per trovarlo è proprio questo, un massimo provvisorio che aggiorni man mano, ci sta poco da fare. Volendo puoi evitare le variabili globali, ma per il problema degli assegnamenti non si può far niente.