You can model a binary tree with a binary operator in the inner nodes using an algebraic data type:
data Tree a = Leaf a | InnerNode (a -> a -> a) (Tree a) (Tree a)
The function a -> a -> a
is the binary operator. For example, a simple tree of integers could be defined as
tree :: Tree Integer
tree = InnerNode (+) (InnerNode (^) (Leaf 3) (Leaf 2)) (Leaf 5)
To evaluate or interpret the tree in the way you describe you can write a function
interpretTree :: Tree Integer -> Integer
To write that function, you will probably want to use pattern matching and recursion:
interpretTree (Leaf x) = x -- the base case
interpretTree (InnerNode f l r) = ... -- use recursion here
For the second case, you can recursively compute the results for the subtrees and combine them using the function f
.