【题目】
【代码】
【方法1】这个是大多数人的解法,其实是不对的,虽然结果正确
# 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:
ans=None
def dfs(root):
nonlocal ans
if not root:
return
if root.val==target.val and ans==None:
ans=root
dfs(root.left)
dfs(root.right)
dfs(cloned)
return ans
【方法2】正确解法
# 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 not original:
return None
if original==target: return cloned
left=self.getTargetCopy(original.left,cloned.left,target)
if left:return left
return self.getTargetCopy(original.right,cloned.right,target)