This chapter proposes a distributed congestion control algorithm for tree-based communications in wireless sensor networks that seeks to adaptively assign a fair and efficient transmission rate to each node. It defines the problem being looked at and also lays down the design rationale. The chapter presents the congestion control algorithm and analyzes the steady-state performance of the algorithm via extensive simulations. It also presents a distributed algorithm for congestion control in wireless sensor networks that seeks to assign a fair and efficient rate to each node. The algorithm requires each node to monitor its aggregate input and output traffic rate, based on the difference of which the node decides to increase or decrease the transmission rates of itself and its upstream nodes. The chapter analyzes the steady-state performance of the algorithm via extensive simulations. The algorithm resolves the fairness problem by allocating equal bandwidth to the sources.