Похоже, вы определили свои функции обхода относительно узла.Это имеет смысл для вас?
Вы должны определить обход относительно Дерева, а не Узла.Узел не знает, что он принадлежит дереву, это тупой объект.
Определить узел.
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right= None
Определить дерево.Также определите здесь свои методы обхода.
class Tree:
def __init__(self, root=None):
self.root = root
def inorder_traversal(self):
def _inorder(root):
if root != None:
yield from _inorder(root.left)
yield root.value
yield from _inorder(root.right)
return list(_inorder(self.root))
Инициализируйте дерево с корнем, а затем обойдите его.
tree = Tree(root)
tree.inorder_traversal()
[3, 1, 4]