跳到主要内容

2641.二叉树的堂兄弟节点II

链接:2641.二叉树的堂兄弟节点II
难度:Medium
标签:树、深度优先搜索、广度优先搜索、哈希表、二叉树
简介:给你一棵二叉树的根 root ,请你将每个节点的值替换成该节点的所有 堂兄弟节点值的和 。如果两个节点在树中有相同的深度且它们的父节点不同,那么它们互为 堂兄弟 。请你返回修改值之后,树的根 root 。

题解 1 - python

  • 编辑时间:2024-02-07
  • 执行用时:41ms
  • 内存消耗:16.5MB
  • 编程语言:python
  • 解法介绍:bfs时当记录完一层的节点后进行遍历处理。
class Solution:
def replaceValueInTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
root.val = 0
map = {}
q = deque()
q.append(root)
size = 1
sum = 0
while q:
node = q.popleft()
if node.left:
map[node.left] = node
q.append(node.left)
sum += node.left.val
if node.right:
map[node.right] = node
q.append(node.right)
sum += node.right.val
size -= 1
if size == 0:
nums = []
for child in q:
csum = 0
if map[child].left: csum += map[child].left.val
if map[child].right: csum += map[child].right.val
nums.append(sum - csum)
for i in range(len(q)):
q[i].val = nums[i]
sum = 0
size = len(q)
return root