上次编辑到这里,代码来自缓存 点击恢复默认模板
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* getTargetCopy(TreeNode* original, TreeNode* cloned, TreeNode* target) {
}
};
cpp 解法, 执行用时: 388 ms, 内存消耗: 160 MB, 提交时间: 2024-04-03 00:07:16
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* getTargetCopy(TreeNode* original, TreeNode* cloned, TreeNode* target)
{
if(!original)
return nullptr;
if(original!=target)//如果不等于,分别遍历左和右
{
TreeNode* a=getTargetCopy(original->left,cloned->left,target);
if(a)//如果a是nullptr,就说明original->left中没有target
return a;
TreeNode*b=getTargetCopy(original->right,cloned->right,target);
if(b)
return b;
return nullptr;
}
else
return cloned;//如果等于,直接返回
}
};
java 解法, 执行用时: 1 ms, 内存消耗: 49.2 MB, 提交时间: 2022-11-12 13:02:42
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public final TreeNode getTargetCopy(final TreeNode original, final TreeNode cloned, final TreeNode target) {
if (original == target) {
return cloned;
}
TreeNode ans = null;
if (original.left != null) {
ans = this.getTargetCopy(original.left, cloned.left, target);
}
if (ans == null && original.right != null) {
return this.getTargetCopy(original.right, cloned.right, target);
}
return ans;
}
}
python3 解法, 执行用时: 1152 ms, 内存消耗: 25.3 MB, 提交时间: 2022-11-12 13:01:40
# 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:
dic = dict()
def preorder(cloned: TreeNode) -> None:
nonlocal dic
if not cloned:
return
dic[cloned.val] = cloned
preorder(cloned.left)
preorder(cloned.right)
preorder(cloned)
return dic[target.val]