18924 二叉树的宽度
时间: 2023-11-18 07:29:16 浏览: 122
二叉树的宽度是指二叉树中同一层节点数的最大值。可以通过层序遍历的方式来计算二叉树的宽度。具体做法是,用一个队列来存储每一层的节点,然后依次取出队列中的节点,将它们的子节点加入到队列中,直到队列为空。在遍历过程中,记录下每一层节点数的最大值即可。
以下是使用 Python 实现的代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def tree_width(root: TreeNode) -> int:
if not root:
return 0
max_width = 0
queue = [root]
while queue:
level_size = len(queue)
max_width = max(max_width, level_size)
for i in range(level_size):
node = queue.pop(0)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return max_width
```
函数 `tree_width` 接受一个二叉树的根节点作为参数,返回二叉树的宽度。在函数中,首先判断根节点是否为空,如果为空则直接返回 0。然后初始化一个队列,将根节点加入到队列中。在遍历过程中,用变量 `level_size` 记录当前层的节点数,用变量 `max_width` 记录所有层中节点数的最大值。在遍历完一层之后,更新 `max_width` 的值,并将下一层的节点加入到队列中。最后返回 `max_width` 的值即可。
阅读全文