示例 1:

示例 2:

示例 3:

/**
* 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) {
return bfs(cloned, target);
}
public TreeNode bfs(TreeNode root, TreeNode target){
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while(!queue.isEmpty()){
TreeNode temp = queue.poll();
if(temp.val == target.val){
return temp;
}
if(temp.left != null){
queue.add(temp.left);
}
if(temp.right != null){
queue.add(temp.right);
}
}
return null;
}
}
# 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:
return self.bfs(cloned, target)
def bfs(self, root: TreeNode, target: TreeNode) -> TreeNode:
queue = [root]
while queue:
temp = queue.pop(0)
if temp.val == target.val:
return temp
if temp.left:
queue.append(temp.left)
if temp.right:
queue.append(temp.right)
return None
/**
* 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) {
return bfs(cloned, target);
}
TreeNode* bfs(TreeNode* root, TreeNode* target){
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
struct TreeNode* temp = (struct TreeNode*)malloc(sizeof(struct TreeNode));
temp = q.front();
q.pop();
if(temp->val == target->val){
return temp;
}
if(temp->left != NULL){
q.push(temp->left);
}
if(temp->right != NULL){
q.push(temp->right);
}
}
return NULL;
}
};
Java语言版

C++语言版
