1602. Find Nearest Right Node in Binary Tree
https://leetcode.com/problems/find-nearest-right-node-in-binary-tree/
Brutal force
from collections import deque
class Solution:
def findNearestRightNode(self, root: TreeNode, u: TreeNode) -> TreeNode:
level = deque()
level.append(root)
while level:
n = len(level)
#print(level)
for i in range(n):
curr = level.popleft()
if curr != None and curr.val == u.val:
while i < n-1 and level[0] == None:
i+=1
level.popleft()
if i == n-1:
return None
return level.popleft()
if curr:
level.append(curr.left)
level.append(curr.right)
return None
优化 right left bfs 顺序调一下,这样可以用last记录
from collections import deque
class Solution:
def findNearestRightNode(self, root: TreeNode, u: TreeNode) -> TreeNode:
level = deque()
level.append(root)
while level:
n = len(level)
#print(level)
last = None
for i in range(n):
curr = level.popleft()
if curr == u:
return last
if curr.right:
level.append(curr.right)
if curr.left:
level.append(curr.left)
last = curr
return None
Last updated
Was this helpful?