We present adaptive protocols for the problem of breadth-first search in a distributed system. An adaptive protocol can change its behavior in response to changes in the network environment, which might be useful to satisfy certain performance requirements and to enhance the life cycle of a software system. We obtain an adaptive protocol by combining two existing breadth-first search protocols, A and B. A performs better than B if network topology is sparse or if the actual message delays on different links during the execution of the protocol are the same. Otherwise, it is more costly to operate than B. Protocol Comp(A,B), which we obtain by composing A and B, performs well under a variety of network conditions. It behaves like A whenever conditions are favorable and like B otherwise. Its message complexity on any topology is the minimum of the message complexities of A and B on that topology. Using the same technique, we obtain another adaptive protocol by combining A with another protocol C. The performance characteristics of this protocol are similar to those of Comp(A,B). Protocols obtained using our technique exhibit an additional property of local adaptivity i.e., the protocols adapt themselves locally to changes in the network.