1. A method of routing data through a router in a communications network, the method comprising: the router performing: receiving one or more data packets, each packet having a respective destination address; applying a lookup algorithm to each packet, said lookup algorithm being arranged to determine a respective route along which each packet is to be transmitted towards its destination address by searching an associated hierarchical data structure containing routing information for each packet; and forwarding each packet for transmission to its respective destination address, wherein said lookup algorithm comprises an adaptive learning component comprising an artificial neural network that is configured to dynamically identify an optimum starting position for searching within said hierarchical data structure, for each of the data packets, based on the results of one or more earlier searches performed by the lookup algorithm of the router by said artificial neural network evaluating search errors associated with each earlier search and dynamically updating one or more weights within said artificial neural network, wherein evaluating said search error and updating said one or more weights enables said artificial neural network to learn the approximate location at which a particular routing information is to be found within said hierarchical data structure.