@interface Tree : NSObject { T value; Tree *left; Tree *right; } - (void)replaceAll:(T)v; @end @implementation Tree - (void)replaceAll:(id)v { value = v; [left replaceAll:v]; [right replaceAll:v]; } @end