各位版友好,在刷leetcode 1660时碰到了一个问题,但不知错误在哪。
我的想法是使用BFS,逐个level找题目所要的invalid node,找到的话就将invalid node
的本身,以及其左右子树设为None。
以下是我的code:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def correctBinaryTree(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
queue = collections.deque([root])
while queue:
visited = set()
for _ in range(len(queue)):
curr = queue.popleft()
visited.add(curr)
if curr.right in visited:
curr.left = None
curr.right = None
curr = None
continue
if curr.right:
queue.append(curr.right)
if curr.left:
queue.append(curr.left)
return root
但是,对于这个test case:
[1,2,3]
2
3
我所return的还是原本的树:[1,2,3],显然invalid node没有被设为None。请问是为什
么呢? 我先谢谢各位愿意看完我的问题,有不清楚的地方我会再补充!