Answering Complex Logical Queries on Knowledge Graphs via Query Computation Tree Optimization