给你两棵二叉树,原始树 original
和克隆树 cloned
,以及一个位于原始树 original
中的目标节点 target
。
其中,克隆树 cloned
是原始树 original
的一个 副本 。
请找出在树 cloned
中,与 target
相同 的节点,并返回对该节点的引用(在 C/C++ 等有指针的语言中返回 节点指针,其他语言返回节点本身)。
注意:你 不能 对两棵二叉树,以及 target
节点进行更改。只能 返回对克隆树 cloned
中已有的节点的引用。
示例 1:
输入: tree = [7,4,3,null,null,6,19], target = 3 输出: 3 解释: 上图画出了树 original 和 cloned。target 节点在树 original 中,用绿色标记。答案是树 cloned 中的黄颜色的节点(其他示例类似)。
示例 2:
输入: tree = [7], target = 7 输出: 7
示例 3:
输入: tree = [8,null,6,null,5,null,4,null,3,null,2,null,1], target = 4 输出: 4
思路:有些题目的描述真的....描述了一大堆也说不清楚,说给两棵树,但例子中只是输入一个tree,我也不知道函数中的original有什么用,不管那么多了,反正只对cloned这棵树操作,遍历这棵树,找到和target值相同的那个结点返回就完事了。
代码(Python):
class Solution(object):
def getTargetCopy(self, original, cloned, target):
if not cloned:
return None
deque = collections.deque([cloned])
while deque:
cur = deque.popleft()
if cur.val == target.val: #若遇到和target一样的结点,返回
return cur
if cur.left:
deque.append(cur.left)
if cur.right:
deque.append(cur.right)