Absolutely the best questions to ask in interviews, in my opinion, are open-ended questions. The problem with those, however, is that the interviewer himself has to know enough to be able to correctly judge whether the candidate's answer is a reasonable one.
Not only that, there are fewer language barriers when asking some canned binary tree bullshit. So a Chinese programmer doing an interview who barely speaks English can still proudly ask the candidate some crap about Heapsort and feel like he's done his job well.