add breadth first traverse