Слияние двоичных деревьев, почему t3 не перезаписывается каждый раз

#python

#python

Вопрос:

Я создал функцию, которая объединяет два двоичных дерева вместе, и она функциональна. Однако я не понимаю, почему t3 не перезаписывается пустым TreeNode при каждом вызове функции. Как он может создать полное объединенное дерево?

 # Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def mergeTrees(self, t1: TreeNode, t2: TreeNode) -> TreeNode:
        t3 = TreeNode()
        if t1 == None:
            return t2
        if t2 == None:
            return t1
        t3.val = t1.val   t2.val
        t3.left = self.mergeTrees(t1.left, t2.left)
        t3.right = self.mergeTrees(t1.right, t2.right)
        return t3
  

Комментарии:

1. Каждая итерация функции отличается t3 .

2. По той же причине, по которой он «не был бы перезаписан», если бы вы вызвали другую функцию, и у этой функции была локальная переменная, которая по совпадению также была названа t3 .