Prolog (SWI), 9595 81 bytes
Haven't programmed in Prolog for a while, so this was a fun challenge to do.
Prologs ability to handle strings and atoms do not make it easy. Probably suboptimal, but here we go:
f(ZR,[H|T]):-atom(H)T=[],appendH<97,R=[H];append(LX,RY,T),f(XC,LX),f(YD,RY),atomics_to_string(['flatten('[40,XC,H,Y,')']D,Z).
f(X41],[X]R).
Takes two parameters. The first being the variable in which the result will be stored and the second being the input split out as a list of atomsInput and numbersoutput are both codepoint lists.
Ungolfed Version
prefix_to_infix(X, [X]) :- number(X).
prefix_to_infix(Result, [X | Xs]) :-
append(Ls, Rs, Xs),
prefix_to_infix(Left, Ls),
prefix_to_infix(Right, Rs),
atomics_to_string(['(', Left, X, Right, ')'], Result).