下列代码的功能是计算给定二叉树T的宽度。二叉树的宽度是指各层结点数的最大值。函数Queue_rear和Queue_front分别返回当前队列Q中队尾和队首元素的位置
时间: 2025-01-01 15:40:44 浏览: 32
这段代码的功能是计算一棵二叉树的最大宽度。它通常会通过层次遍历(广度优先搜索)的方式来进行。算法的核心是一个队列(Queue),用来存储当前层的所有节点。首先将根节点入队,并设置宽度为1(因为只有根节点)。然后进入一个循环,不断从队列的前端取出节点,访问该节点,并将其左右子节点(如果存在)加入队列的后端,同时更新宽度,取当前队列长度(即最大子层节点数)和之前宽度的较大值作为新的宽度。这个过程持续到队列为空,表示已经遍历完所有节点。
```python
def widthOfBinaryTree(T):
if not T: return 0
queue = [(T, 0)] # 队列结构 (节点, 层级)
width = 1 # 初始化宽度为1(只有一层)
while queue:
node, level = queue.pop(0) # 取出队首元素
if level + 1 > width: # 如果新层比已知层数大,则更新宽度
width = level + 1
if node.left: # 左孩子存在,加入队列后一层
queue.append((node.left, level+1))
if node.right: # 右孩子存在,加入队列后一层
queue.append((node.right, level+1))
return width
阅读全文
相关推荐


















