给定一棵二叉树,任务是用同一层中所有节点的总和替换每个节点的值。
例子:
Input:
Output:
Explanation:
The sum of nodes at level1: 9
The sum of nodes at level2: 6 + 10 = 16
The sum of nodes at level3: 4 + 7 + 11 = 22
The sum of nodes at level4: 3 + 5 + 8 = 16
Input:
Output:
方法:找到树的每个级别的节点总和并使用级别顺序遍历将每个节点替换为该级别的节点总和的想法。请按照以下步骤解决问题:
- 初始化两个队列,比如说que1和que2,其中节点的每个级别的总和可使用que1来计算,并在使用que2同一水平替换所有节点的总和每个节点。
- 使用 Level Order Traversal 并计算树的每个级别的所有节点的总和。
- 使用 Level Order Traversal 并用树的该级别的所有节点的总和替换每个节点。
- 最后,使用 Level Order Traversal 打印树。
下面是上述方法的实现:
C++14
9
/ \
6 10
/ \ \
4 7 11
/ \ \
3 5 8
Java
9
/ \
16 16
/ \ \
22 22 22
/ \ \
16 16 16
Python3
5
/ \
6 3
/ \ \
4 9 2
输出:
5
/ \
9 9
/ \ \
15 15 15
时间复杂度: O(N)
辅助空间: O(N)
如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live