A intuitive C solution with recursion.

```
struct TreeNode* trimBST(struct TreeNode* root, int L, int R) {
if (!root)
return NULL;
if(root->val<L)
return trimBST(root->right,L,R);
if(root->val>R)
return trimBST(root->left,L,R);
root->left = trimBST(root->left,L,R);
root->right = trimBST(root->right,L,R);;
return root;
}
```