It's one thing to "know" how to balance a binary tree because you've read up on and practiced the most common challenges - it's something else entirely to actually think through and understand a problem, then come up with a solution.
I'd much rather have someone who can describe the edge cases and the complexity of a problem but get the final solution slightly wrong (but hey, the know the edge cases so can write tests for it, right?), than someone who can regurgitate code they've written before without really understanding it.