用 C++ 找出给定的完全二叉树中所有节点的和
假设我们有一个正整数 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
广告