## 1 Introduction  
Recent years have witnessed the emergence of wireless sensor networks (WSNs) which consist of many tiny sensor nodes equipped with the capabilities of sensing, processing and transmitting [1; 2; 3; 4; 5; 6; 7; 8]. In a WSN, sensor nodes collect information about physical phenomena such as temperature, humidity, vibrations, etc. from the surrounding environment and transfer to the base stations for further processing. There are numerous types of WSN such as terrestrial WSNs, underground WSNs, underwater WSNs, multimedia WSNs, mobile WSNs [9]. Applications of WSNs have been widely used in various domains including military target tracking and surveillance [10], natural disaster relief [5; 6; 7; 8; 11], agricultural and environmental monitoring [12; 13], biomedical health monitoring [14], etc. A WSN is composed of sensor nodes deployed over a region of interest to monitor and (or) control the physical environment. A sensor node typically includes four components. The first one is a sensing subsystem that consists of one or more sensors for data acquisition from the surrounding physical environment. The second component is a processing subsystem comprised of a memory for storing data and a controller to perform computation. The third and fourth one is a wireless communication component for data transmission and a power supply component, respectively. In WSNs, every sensor node usually needs to accomplish two demanding tasks simultaneously, sensing and communicating. While the communication is mandatory, in many WSN applications such as battlefield surveillance or earthquake monitoring, the full sensing coverage is also essential. In the full-coverage WSN, the network can achieve its duty only if all sensor nodes can sense and report the sensed data. Hence, the death of even only one node may cause the network to operate unfunctionally. For example, the former WSN application requires sensors detecting and reporting all occurred events since an enemy can appear anywhere at any time. Therefore, all sensors need to operate functionally. In the latter, the death of a sensor locating at the critical region (e.g., the center of the earthquake) may reduce the forecast accuracy significantly. In other words, the network lifetime during which the network operates properly depends on the lifetime of the sensor node, which depletes the energy first. Therefore, maximizing the network lifetime, which is the minimum lifetime of sensor nodes, is one of the most critical problems in WSNs. As sensor nodes are equipped with only limited capability and non-rechargeable batteries [12], conserving energy consumption is vital in prolonging the network lifetime. Moreover, due to the short-range communication nature of sensor nodes, data transfer in WSNs is usually needed to bypass multiples hop to reach a destination. Hence, designing energy-efficient routing protocols for WSNs has received intense research attention [15; 16; 17; 18; 19; 20; 21]. In the routing layer, energy conservation can be achieved by _shortening the routing path_ and _reducing the overhead_ caused by control packets. Moreover, as mentioned earlier, the death of even only one node may damage the network operation. Accordingly, _balancing traffic_ over the network to extend the network lifetime is another crucial designing factor of routing protocol in WSNs. In such WSNs, geographic routing [22; 23] has been widely used because of its simplicity and efficiency resulting from its local and stateless nature. However, when subjected to routing holes (i.e., regions without sensor nodes that have communication capability), geographic routing suffers from the so-called local minimum phenomenon, where packets are stopped at the hole boundaries [24; 25]. The traditional scheme (known as perimeter routing) for that phenomenon is forwarding packets along the hole perimeters [26; 27; 23; 28]. However, this scheme suffers from two serious problems: routing path enlargement and data concentration around the hole boundaries.