Равномерное распределение загрузки по процессорам предполагает определенную организацию передач данных в рамках некоторой структуры. Например, при рассылке входных данных между процессами программы вычисления интеграла хороший результат может дать организация дерева процессов, корнем которого является процесс 0 (рис. 2).
На первой стадии распределения данных процесс 0 посылает данные процессу 4. В течение следующей стадии, процесс 0 посылает данные процессу 2, в то время как процесс 4 посылает те же данные процессу 6. В ходе последней стадии, процесс 0 посылает данные процессу 1, в то время как процесс 2 посылает данные процессу 3, процесс 4 посылает данные процессу 5, и наконец, процесс 6 посылает данные процессу 7. При этом цикл распределения данных уменьшился с 7 этапов до 3. Если существует процессов, эта процедура позволяет распределять входные данные в этапов, вместо этапов, что при достаточно большом существенно ускоряет процесс.
Чтобы модифицировать функцию Get_data() для использования схемы распределения в виде дерева, необходимо ввести цикл из итераций. Каждый процесс при этом определяет на каждой стадии: