This document discusses a Java binary tree data structure for environmental modelling. It describes using several design patterns including composite, strategy, observer, and decorator patterns to build a flexible data structure. The data structure represents nodes that can be organized in a tree structure. Various algorithms and features can be added to the tree through the strategy and decorator patterns. The observer pattern allows processes to connect between nodes as their states change. The data structure is being applied to model an river basin divided into sub-basins and a sewer network.