У меня есть переменная (названная root
), определенная вне цикла while, и я делаю изменения в ней внутри цикла while, но эти изменения не отражаются вне цикла while. Я инициализировал свою переменную root
как TreeNode
со значением OLD_VALUE
, а затем изменил ее значение на NEW_VALUE
внутри цикла while. После печати значения root
вне цикла оно все еще показывает исходное значение, т.е. OLD_VALUE
. Итак, псевдокод выглядит следующим образом (я могу поделиться реальным кодом при необходимости):
class TreeNode: #Defines nodes of a binary tree
def __init__(self, val):
self.val = val
self.left = None
self.right = None
class Solution(object): #this is my main class where I have a problem
def buildTree(self, pre, ino):
##some code
root = TreeNode(OLD_VALUE) #This is the variable in question
stack = [] #Basically I am sending the variable 'root' through this stack
stack.append([item1, item2, item3, item4, root])
while(stack):
all_items = stack.pop()
##some code
all_items[4] = TreeNode(NEW_VALUE) #Note, all_items[4] is root actually
##some code
(#val1, val2, val3, val4 are some computed values)
stack.append([val1, val2, val3, val4, all_items[4].right]) #Note, all_items[4] is root
stack.append([val1, val2, val3, val4, all_items[4].left]) #Note, all_items[4] is root
print(root.val)
#It prints OLD_VALUE instead of NEW_VALUE