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

编程入门 行业动态 更新时间:2024-10-09 22:21:43

LeetCode 2641 二叉树的<a href=https://www.elefans.com/category/jswz/34/1753664.html style=堂兄弟节点 II"/>

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

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

题目链接

给你一棵二叉树的根 root ,请你将每个节点的值替换成该节点的所有 堂兄弟节点值的和 。
如果两个节点在树中有相同的深度且它们的父节点不同,那么它们互为 堂兄弟 。请你返回修改值之后,树的根 root 。
注意,一个节点的深度指的是从树根节点到这个节点经过的边数。

示例 1:

输入:root = [5,4,9,1,10,null,7]
输出:[0,0,0,7,7,null,11]
解释:上图展示了初始的二叉树和修改每个节点的值之后的二叉树。
- 值为 5 的节点没有堂兄弟,所以值修改为 0 。
- 值为 4 的节点没有堂兄弟,所以值修改为 0 。
- 值为 9 的节点没有堂兄弟,所以值修改为 0 。
- 值为 1 的节点有一个堂兄弟,值为 7 ,所以值修改为 7 。
- 值为 10 的节点有一个堂兄弟,值为 7 ,所以值修改为 7 。
- 值为 7 的节点有两个堂兄弟,值分别为 1 和 10 ,所以值修改为 11 。

示例 2:

输入:root = [3,1,2]
输出:[0,0,0]
解释:上图展示了初始的二叉树和修改每个节点的值之后的二叉树。
- 值为 3 的节点没有堂兄弟,所以值修改为 0 。
- 值为 1 的节点没有堂兄弟,所以值修改为 0 。
- 值为 2 的节点没有堂兄弟,所以值修改为 0 。
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def replaceValueInTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:q = deque([root])cnt = Counter()  # 存当前节点所有儿子节点的值的和father = dict()  # 存每个节点的父亲节点father[root] = 0  # 根节点的父亲节点cnt[0] = root.valwhile q:tmp = qq = []s = sum(node.val for node in tmp)  # 求当前层所有节点的值的和for node in tmp:if node.left:cnt[node] += node.left.valfather[node.left] = nodeq.append(node.left)if node.right:cnt[node] += node.right.valfather[node.right] = nodeq.append(node.right)node.val = s - cnt[father[node]]return root

更多推荐

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

本文发布于:2024-02-07 05:52:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753624.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:堂兄弟   节点   二叉树   LeetCode   II

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!