二叉树的WPL计算的代码
时间: 2024-05-16 19:12:54 浏览: 84
二叉树的代码
5星 · 资源好评率100%
二叉树的WPL(带权路径长度)是指所有叶子节点的带权路径长度之和,可以通过遍历二叉树来计算。以下是一个递归实现的示例代码:
```python
class Node:
def __init__(self, val, left=None, right=None):
self.val = val
self.left = left
self.right = right
def wpl(root, depth=0):
if root is None:
return 0
if root.left is None and root.right is None:
return root.val * depth
return wpl(root.left, depth + 1) + wpl(root.right, depth + 1)
```
其中,`Node` 类表示二叉树节点,包含节点值 `val`、左子树 `left` 和右子树 `right`。`wpl` 函数接收根节点 `root` 和当前深度 `depth`,返回以当前节点为根的子树的WPL。
在递归过程中,如果当前节点是叶子节点,则返回该节点的值乘以当前深度;否则,递归计算左子树和右子树的WPL,并将它们相加返回。
最后,调用 `wpl` 函数时传入根节点即可计算二叉树的WPL。
阅读全文