สมมติว่าเรามีจำนวนเต็มบวก L ซึ่งแทนจำนวนระดับในทรีไบนารีที่สมบูรณ์แบบ โหนดลีฟในต้นไม้ไบนารีที่สมบูรณ์แบบนี้มีหมายเลขตั้งแต่ 1 ถึง n โดยที่ n คือจำนวนโหนดลีฟ โหนดหลักคือผลรวมของเด็ก งานของเราคือการเขียนโปรแกรมเพื่อพิมพ์ผลรวมของโหนดทั้งหมดของต้นไม้ไบนารีที่สมบูรณ์แบบนี้ ดังนั้นถ้าต้นไม้เป็นเหมือนด้านล่าง −

ดังนั้นยอดรวมคือ 30
ถ้าเรามองใกล้ขึ้น เราต้องหาผลรวมของโหนดทั้งหมด เนื่องจากโหนดลีฟมีค่าตั้งแต่ 1 ถึง n เราจึงสามารถใช้สูตร n(n+1)/2 เพื่อรับผลรวมของโหนดลีฟ เนื่องจากเป็นไบนารีทรีที่สมบูรณ์แบบ ผลรวมของแต่ละระดับจะเท่ากัน ดังนั้นจงหาผลรวมของระดับสุดท้าย แล้วคูณด้วยจำนวนระดับ
ตัวอย่าง
#include<iostream>
#include<cmath>
using namespace std;
int treeSum(int level) {
int total_leaves = pow(2, level - 1);
int leaf_sum = 0;
leaf_sum = (total_leaves * (total_leaves + 1)) / 2;
int sum = leaf_sum * level;
return sum;
}
int main() {
int levels = 4;
cout << "Sum of all nodes for a perfect binary tree with level " << levels << " is: " << treeSum(levels);
} ผลลัพธ์
Sum of all nodes for a perfect binary tree with level 4 is: 144