Python busca un nodo en el árbol binario

Tengo problemas para buscar en el árbol binario, quiero verificar si la raíz existe pero encontré un error. ¿Qué estoy haciendo mal?

este es mi código completo:

class Node:
    def __init__(self, data):
        self.left = None
        self.right = None
        self.data = data

    def printTree(self):
        if self.left:
            self.left.PrintTree()
        print(self.data),
        if self.right:
            self.right.PrintTree()

    def insert(self, data):
        """ Compare the new value with the parent node """
        if self.data:
            if data < self.data:
                if self.left is None:
                    self.left = Node(data)
                else:
                    self.left.insert(data)
            elif data > self.data:
                if self.right is None:
                    self.right = Node(data)
                else:
                    self.right.insert(data)
        else:
            self.data = data

    def is_exist(self, val):
        if val < self.data:
            if self.left is None:
                return None, None
            return self.left.exists(val, self)
        elif val > self.data:
            if self.right is None:
                return None, None
            return self.right.exists(val, self)
        else:
            return self.data

esta es mi función de búsqueda para verificar si existe root

def is_exist (self, val): if val <self.data: si self.left es None: return None, None return self.left.exists (val, self) elif val> self.data: si self.right es None : return None, None return self.right.exists (val, self) else: return self.data

esta es la prueba:

def test_binary_tree():
    root = Node(10)
    assert root.is_exist(10)
    root.insert(4)
    assert root.is_exist(4)
    root.insert(11)
    assert root.is_exist(11)
    root.insert(3)
    assert root.is_exist(3)
    root.insert(770)
    assert root.is_exist(770)
    root.insert(523)
    assert root.is_exist(523)
    root.insert(43)

print(test_binary_tree())

el error que tengo:

    return self.left.exists(val, self)
AttributeError: 'Node' object has no attribute 'exists'
Answer

Llamas a tu función por el nombre incorrecto. Además, uno no especifica selfsi llama a los métodos de un objeto. Vea aquí . Escribiste return self.right.exists(val, self)pero debiste haber escritoreturn self.right.is_exist(val)