1379. 找出克隆二叉树中的相同节点

给你两棵二叉树,原始树 original 和克隆树 cloned,以及一个位于原始树 original  中的目标节点  target。

其中,克隆树 cloned  是原始树 original  的一个 副本 。

请找出在树  cloned  中,与  target  相同   的节点,并返回对该节点的引用(在 C/C++ 等有指针的语言中返回 节点指针,其他语言返回节点本身)。

链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
* Definition for a binary tree node.
* class TreeNode {
* val: number
* left: TreeNode | null
* right: TreeNode | null
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
* }
*/

function getTargetCopy(
original: TreeNode | null,
cloned: TreeNode | null,
target: TreeNode | null
): TreeNode | null {
function dfs(node: TreeNode | null) {
if (node === null) return null;
if (node.val === target.val) {
return node;
}
const lRes = dfs(node.left);
if (lRes) {
return lRes;
}
const rRes = dfs(node.right);
return rRes;
}
return dfs(cloned);
}