Leetcode 662: 二叉树最大宽度 是一道考察树的层序遍历和位编号思想的经典题目。其目标是找到二叉树的每一层的最大宽度,宽度定义为:最左节点和最右节点间的节点数(包含这两个节点,中间可以有空节点)。
题目描述
- 给定一个二叉树的根节点
root
,返回其最大宽度。 - “宽度”定义为:
- 每层最左节点(即层级中最左非空节点)到最右节点之间节点的数目。
- 如果同一层只有一个非空节点,则宽度为 1。
解法 1:层序遍历 + 队列 (广度优先搜索 BFS)
思路
- 维护位置信息:
- 使用广度优先遍历 BFS,同时为每个节点分配一个基于完全二叉树的编号。根节点的编号为
1
,左孩子为2 * x
,右孩子为2 * x + 1
。 - 每层的宽度可通过计算该层最
- 使用广度优先遍历 BFS,同时为每个节点分配一个基于完全二叉树的编号。根节点的编号为