Here is my code. I can't understand what I'm missing.
class Node:
def __init__(self, data,left = None,right = None):
self.data = data
self.left = left
self.right = right
class BST:
def __init__(self,root=None):
self.root = root
def insert(self,val):
new_node = Node(val)
if self.root == None:
self.root = new_node
else:
cur = self.root
leaf = None
while cur!=None:
leaf = cur
if val >= cur.data:
cur = cur.right
else:
cur = cur.left
if val >= leaf.data:
leaf.right = new_node
else:
leaf.left = new_node
def preOrder(self,root):
if root:
print(root.data,end=' ')
preOrder(root.left)
preOrder(root.right)
b = BST()
b.insert(1)
b.insert(2)
b.insert(5)
b.insert(3)
b.insert(6)
b.insert(4)
b.preOrder(b.root)
This code is showing this error: NameError: name 'preOrder' is not defined How does it possible? I've defined the preOrder() in class BST. How can I solve this problem? And please explain the error so that I can understand my misunderstanding.