给定一棵二叉树,任务是将树的每个节点的值替换为同一对角线上所有节点的总和后,打印树的层序遍历。
例子:
Input:
Output: 30 21 30 9 21 30 3 9 21
Explanation:
Diagonal traversal of the binary tree
9 10 11
6 7 8
4 5
3
Input:
Output: 10 15 10 4 15 10
Explanation:
10
/ \
15 10
/ \ \
4 15 10
做法:思路是对二叉树进行对角遍历,将每个节点的和存储在同一条对角线上。最后,遍历树并用该对角线上的节点总和替换每个节点。请按照以下步骤解决问题:
- 使用树的对角线遍历并存储树的每个对角线处所有节点的总和并将每个对角线的总和存储到映射中。
- 使用层序遍历遍历树,并用该对角线上所有节点的总和替换树的每个节点。
- 最后,使用层序遍历打印树。
下面是上述方法的实现:
C++
9
/ \
6 10
/ \ \
4 7 11
/ \ \
3 5 8
Python3
30
/ \
21 30
/ \ \
9 21 30
/ \ \
3 9 21
输出:
5
/ \
6 3
/ \ \
4 9 2
时间复杂度: O(N)
辅助空间: O(N)
如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live