In this article, a novel approach to solve combinatorial optimization problems is proposed. This approach makes use of a heuristic algorithm to explore the search space tree of a problem instance. The algorithm is based on Monte Carlo tree search, a popular algorithm in game playing that is used to explore game trees. By leveraging the combinatorial structure of a problem, several enhancements to the algorithm are proposed. These enhancements aim to efficiently explore the search space tree by pruning subtrees, using a heuristic simulation policy, reducing the domain of variables by eliminating dominated solutions and using a beam width. They are demonstrated for a specific combinatorial optimization problem: the quay crane scheduling problem with non-crossing constraints. Computational results show that the proposed algorithm is competitive with the state-of-the-art for this problem and eight new best solutions for a benchmark set of instances are found. Apart from this, the results also show evidence that the algorithm is able to learn to correct the incorrect choices of a standard heuristic, yielding an average improvement of 10.0 % with respect to the objective function value of the solution.