嗨,我正在尝试解决leetcode
问题1379
。
这里是问题的陈述+链接:
https://leetcode.com/problems/find-a-corresponding-node-of-a-binary-tree-in-a-clone-of-that-tree/
这是我尝试解决问题的失败:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def getTargetCopy(self, original: TreeNode, cloned: TreeNode, target: TreeNode) -> TreeNode:
if cloned:
if cloned.val == target.val:
return cloned
self.getTargetCopy(original, cloned.left, target)
self.getTargetCopy(original, cloned.right, target)
我无法理解为什么这不起作用。
我认为我的解决方案是对树进行预遍历,并在每个阶段询问克隆树中的节点是否存在,如果存在,它的值是否等于我们要寻找的值?如果是,则返回该节点,我们已经找到了我们要寻找的节点。
如果不检查则简单地进行检查树。由于树中的值保证是唯一的,并且目标值必须保证在树中,所以我要访问每个节点,因此肯定可以在找到答案时起作用。
但是它没有通过自动测试,它甚至没有通过示例1(如上图所示,并说它正在返回null
。
我想念什么?
if
条件不成立时,您不会return
任何东西。
因此更改这两行:
self.getTargetCopy(original, cloned.left, target)
self.getTargetCopy(original, cloned.right, target)
收件人:
res = self.getTargetCopy(original, cloned.left, target)
if res:
return res
return self.getTargetCopy(original, cloned.right, target)