二叉树的WPL计算的完整代码
时间: 2024-05-05 21:23:03 浏览: 182
二叉树的WPL(带权路径长度)计算方法是将每个节点的权值乘以它的深度,然后将所有节点的带权路径长度累加起来。以下是一个完整的C++代码示例:
```cpp
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 计算二叉树的WPL
int getWPL(TreeNode* root, int depth) {
if (!root) return 0;
if (!root->left && !root->right) return root->val * depth;
return getWPL(root->left, depth + 1) + getWPL(root->right, depth + 1);
}
int main() {
// 构造一个二叉树
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
int wpl = getWPL(root, 0);
cout << "WPL = " << wpl << endl;
return 0;
}
```
在上面的代码中,我们使用了一个递归函数 `getWPL` 来计算二叉树的WPL。当遍历到叶子节点时,我们将该节点的权值乘以深度返回。否则,我们递归计算左右子树的WPL,并将它们的和返回。在主函数中,我们构造了一个二叉树,并计算了它的WPL。
阅读全文