Reputation: 123
I'm struggling to get the hang of traversing a binary search tree I think I have my code right but I keep getting the following error.
C:\Python33\python.exe "C:/Users/koopt_000/Desktop/College/Sophomore Semester 2/Computer Science 231/Chapter7/Test.py"
Traceback (most recent call last):
File "C:/Users/koopt_000/Desktop/College/Sophomore Semester 2/Computer Science 231/Chapter7/Test.py", line 16, in <module>
print(BST.preOrder(tree))
TypeError: preOrder() missing 1 required positional argument: 'tree'
Process finished with exit code 1
I'm trying to print out my pre order of my tree and it just doesn't want to work, here is my code.
class TreeNode(object):
def __init__(self, data = None, left=None, right=None):
self.item = data
self.left = left
self.right = right
def __str__(self):
return str(self.item)
#------------------------------------------------------------
from TreeNode import TreeNode
class BST(object):
#------------------------------------------------------------
def __init__(self):
self.root = None
self.size = 0
#------------------------------------------------------------
def preOrder(self, tree):
if tree is None:
pass
else:
print(tree.item)
preOrder(tree.left)
preOrder(tree.right)
def postOrder(self, root):
if root is None:
pass
else:
self.postOrder(root.left)
self.postOrder(root.right)
print(root.item)
def inOrder(self, root):
if root is None:
pass
else:
self.inOrder(root.left)
print(root.item)
self.inOrder(root.right)
Here is my testing code:
from BinarySearchTree import BST
from TreeNode import TreeNode
tree = TreeNode(1,
TreeNode(2,
TreeNode(4,
TreeNode(7,None,None),
None),
TreeNode(5, None, None)),
TreeNode(3,
TreeNode(6,
TreeNode(8, None, None),
TreeNode(9, None, None)),
None))
print(BST.preOrder(tree))
I know it has to do something with me putting something for 'self' in my print statement, but I'm pretty stumped and my brain is not functioning properly at the moment. Any ideas?
Upvotes: 0
Views: 197
Reputation: 24139
Worked fine for me with some changes.
bst.py:
class TreeNode(object):
def __init__(self, data = None, left=None, right=None):
self.item = data
self.left = left
self.right = right
def __str__(self):
return str(self.item)
#------------------------------------------------------------
class BST(object):
#------------------------------------------------------------
def __init__(self):
self.root = None
self.size = 0
#------------------------------------------------------------
def preOrder(self, tree):
if tree is None:
pass
else:
print(tree.item)
self.preOrder(tree.left)
self.preOrder(tree.right)
def postOrder(self, root):
if root is None:
pass
else:
self.postOrder(root.left)
self.postOrder(root.right)
print(root.item)
def inOrder(self, root):
if root is None:
pass
else:
self.inOrder(root.left)
print(root.item)
self.inOrder(root.right)
something.py
from bst import BST
from bst import TreeNode
tree = TreeNode(1,
TreeNode(2,
TreeNode(4,
TreeNode(7,None,None),
None),
TreeNode(5, None, None)),
TreeNode(3,
TreeNode(6,
TreeNode(8, None, None),
TreeNode(9, None, None)),
None))
a = BST()
print(a.preOrder(tree))
Output:
bob@squids:~/Desktop$ python something.py
1
2
4
7
5
3
6
8
9
None
Upvotes: 3