如何对通过二叉树构建的表达式,对其中某个变量求偏导

假设算术表达式Expression内可以含有变量 (a~z)、常量 (0~9)和二元运算符 (+,-,*,/,^(乘幂 ))。
增加 求偏导数运算 Diff(E, V)—— 求表达式E对变量 V的导数;

最近数据结构课程project中的一个问题,想了很久还是没有想到好的方法,感觉会很复杂
比如说3*4*5a^2+b对a求偏导,结果应为120*a,可是我难以找到一个合适的分类标准,使得运算在正确的地方停止