| Input: The DAT tree with root and depth , data stored at each tree node . |
| (1) Let be the final data aggregation tree. |
| (2) Initially all independent set nodes form different components, each node in broadcasts dominatees |
| message so that dominatees can know of adjacent independent set nodes in different components. |
| (3) for do |
| (4) while a dominatee node exists having -adjacent independent nodes of in different components do |
| (5) Choose all dominators, denoted as , in level of tree. |
| (6) For every dominator do |
| (7) Node broadcasts itself as the dominator. |
| (8) Node finds the set of unmarked dominators that are within 2-hops of in T, and in |
| lower level or , mark all nodes in . |
| (9) Dominatees on receiving this message keep a count of neighbouring dominators at level |
| or and broadcasts the final count. |
| (10) Each level or dominators on receiving the counts from the potential connectors, |
| select among them the node with highest bank as its connector and informs it. |
| (11) Node , then becomes a connector; . |
| (12) Every node in sends aggregated data to the parent node (a connector node) in . |
| (13) Every node that is a parent of some nodes in sends original data to node (which is the |
| parent of in ). |
| (14) End for |
| (15) |
| (16) End for /* The identified DAT nodes connect the dominator nodes. Thus, independent set nodes and DAT |
| nodes forms the CDS of */ |
| (17) The root sends the result to the sink using the shortest path. |