用 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

更新日期:2019 年 12 月 17 日

146 条浏览

开始您的职业

完成本课程获得认证

开始
广告