Parse a search condition into an expression tree
You don't show how this is being called. So we have to make some assumptions:


I assume that the search conditions have been parsed into tokens as one-token-per-string in the vector? That is, for search conditions like "a + b &lt; 10 OR c = 1" (your example), the tokens vector looks like { "a", "+", "b", "&lt;", "10", "OR", "c", "=", "1" }.
I assume that the node type contains a vector&lt;node *&gt; called subTree.
You also don't specify if you expect the resulting tree to be a binary tree or not. Your code is written that way, but it doesn't seem to be a requirement. Other than the relational operators, the rest of your operators could easily handle more than two operands: a OR b OR c, 1 + 2 + 3, etc. I assume that the tree must be binary, since you coded it that way.


With those assumptions, I observe:


You are not handling the case of a zero-length tokens vector. This would be an empty input, or an error of some kind.
You are not handling syntax errors at all, really. What should your code be returning for something like a + * b?
You are using recursion when it is not necessary. Specifically, your switchDelimiter function is really just a way to hide iteration. It would be better, IMO, to write your code to loop over the delimiters instead of calling a function and then recursing with the same tokens and a new delimiter.
You are using recursion when it is not necessary. Specifically, your "right subtree" case recurses with the same delimiter, and it + 1. That's a sign that you can just continue your existing loop, after updating the parent node to a new value. (You will have to move your "new node" code inside the loop, though.)
 3.