add queue
add traverse