给定二叉树,任务是在用相同对角线上的所有节点的总和替换树中每个节点的值之后,打印树的级别顺序遍历。
例子:
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)