请写出一段python代码来计算二叉树最大的宽度
时间: 2024-05-14 16:14:58 浏览: 86
以下是一个计算二叉树最大宽度的Python代码示例:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def width_of_binary_tree(root: TreeNode) -> int:
if not root:
return 0
max_width = 0
level = [(root, 0)]
while level:
cur_width = level[-1][1] - level[0][1] + 1
max_width = max(max_width, cur_width)
next_level = []
for node, pos in level:
if node.left:
next_level.append((node.left, pos * 2))
if node.right:
next_level.append((node.right, pos * 2 + 1))
level = next_level
return max_width
```
该函数的输入是二叉树的根节点,返回值是二叉树最大的宽度。该函数使用BFS算法遍历二叉树,对于每一层,计算该层的宽度,并将下一层的节点添加到队列中。在每一层遍历完毕后,更新最大宽度的值。最后返回最大宽度。
阅读全文