662. 二叉树最大宽度
题目描述
实现思路
1、回忆数组表示二叉树的位置如何表示
2、层次遍历二叉树
代码实现
def widthOfBinaryTree(self, root: TreeNode) -> int:
queue = [(root,1)] # queue = [(root,0)],位置值0或1均可,0代表相对位置,1代表绝对位置
res = -1
while queue:
res = max(res, queue[-1][1] - queue[0][1] + 1)
for _ in range(len(queue)):
node, pos = queue.pop(0)
if node.left:
queue.append((node.left, pos * 2))
if node.right:
queue.append((node.right, pos * 2 + 1))
return res
参考
参考题解下方的解答,这题考查节点在数组中的位置表示
https://leetcode-cn.com/problems/maximum-width-of-binary-tree/solution/er-cha-shu-zui-da-kuan-du-by-leetcode/