2641. 二叉树的堂兄弟节点 II
思路
BFS改改就行
记得python是没队列的,要用双端队列
# 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()
q.append(root)
while q:
s=len(q)
vals=[]
nodes=[]
for _ in range(s):
node=q.popleft()
nodes.append(node)
val=0
if node.left:
val+=node.left.val
q.append(node.left)
if node.right:
val+=node.right.val
q.append(node.right)
vals.append(val)
tot=sum(vals)
for node in nodes:
lv=0
if node.left:
lv+=node.left.val
node.left.val=tot-node.left.val
if node.right:
if node.left: node.left.val-=node.right.val
node.right.val=tot-node.right.val-lv
root.val=0
return root
OPEN17的个人小站