Concurrent Search Trees: An Algorithm For Parallel Binary Search Trees