У меня есть проблема, связанная с проблемой значения экземпляра класса. Этот код ниже состоит из класса Binary Tree и некоторых методов поиска (Depth-First-Search), которые являются алгоритмами предварительного и порядкового порядка.
Код работает на 100%, проблема в том, что когда я отлаживаю функцию root.in_order (), печатаю b, a, c, но ожидаемые возвращаемые значения - d, b, a, e, c, f.
class Node:
def __init__(self, value):
self.value = value
self.left_hand = None
self.right_hand = None
def insert_left(self,value):
if self.left_hand == None:
self.left_hand = Node(value)
else:
new_node = Node(value)
new_node.left_hand = self.left_hand
self.left_hand = new_node
def insert_right(self,value):
if self.right_hand == None:
self.right_hand = Node(value)
else:
new_node = Node(value)
will_be_loaded_right_child = self.right_hand
self.right_hand = new_node
new_node.right_hand = will_be_loaded_right_child
def pre_order(self):
print(self.value.value)
print(repr(self.value))
if self.left_hand:
self.left_hand.pre_order()
if self.right_hand:
self.right_hand.pre_order()
def in_order(self):
if self.left_hand:
self.left_hand.in_order()
print(self.value)
if self.right_hand:
self.right_hand.in_order()
def __str__(self):
return "{}".format(self.value)
def printAtt(self , arr = []):
if arr.count>1:
try:
arr = [self.value, self.left_hand.value, self.right_hand.value]
print(arr)
except AttributeError:
print("""There is nothing to show of the root |-> {} <-|
Node |-> {} <-| has not right or left handside value,
please continue to add or it
could be the last child:D""".format(self.value.value, self.value.value))
root = Node("a")
node_b = Node("b")
node_c = Node("c")
node_d = Node("d")
node_e = Node("e")
node_f = Node("f")
root.insert_left(node_b)
root.insert_right(node_c)
node_b.insert_right(node_d)
node_c.insert_left(node_e)
node_c.insert_right(node_f)
root.in_order()