Дерево выражений это представление, например, "a+b>0" не в виде исполняемого кода, a в виде данных, в виде объектной модели. Зачем это нужно? Чаще всего ДВ используются к контексте, например, баз данных или любого другого потребителя, которому нужна строка, которая, возможно, будет пересылаться по сети. Например, из объектной модели(бинарное дерево выражений) строится SQL-запрос (грубо говоря что-то типа SELECT xxx WHERE a+b>0) и отправляется серверу. Или эта объектная модель передается в метод, который по дереву строит запрос к гуглу по всем правилам(строка, которая потом отправляется по http).