I am trying to do insert function in python for BST but I am just confused on how to access the public methods properly and its giving me some grief, right now when I test it it just stops at the first test and says nonetype object has no attribute data but how am I suppose to access data when t = tree() and tree doesn't have a data constructor?
class Node(object):
def __init__(self, data):
self.parent = None
self.left = None
self.right = None
self.data = data
class Tree(object):
# Binary Search Tree
# class constants
PREORDER = 1
INORDER = 2
POSTORDER = 3
def __init__(self):
# Do not create any other private variables.
# You may create more helper methods as needed.
self.root = None
def print(self):
# Print the data of all nodes in order
self.__print(self.root)
def __print(self, curr_node):
# Recursively print a subtree (in order), rooted at curr_node
if curr_node is not None:
self.__print(curr_node.left)
print(str(curr_node.data), end=' ') # save space
self.__print(curr_node.right)
def insert(self, data):
# Find the right spot in the tree for the new node
# Make sure to check if anything is in the tree
# Hint: if a node n is null, calling n.getData() will cause an error
root = Node(data)
print("this is my", self.root)
if self.root is None:
self.root = root
return Node(data)
else:
if root.data == data:
return root
elif root.data < data:
root.right = insert(root.right,data)
else:
root.left = insert(root.left, data)
return root
And this is the test cases that I'm running with
import lab3
import unittest
class T0_tree__insert(unittest.TestCase):
def test_balanced_binary_search_tree(self):
print("\n")
print("tree_insert_with_individual_check")
t = lab3.Tree()
t.insert(4)
t.insert(2)
t.insert(6)
t.insert(1)
t.insert(3)
t.insert(5)
t.insert(7)
#The following check is without using tree as an iterator (which uses inorder traversal)
#So this function also does not check the implementation of the traversal function
self.assertEqual(t.root.data, 4)
self.assertEqual(t.root.left.data, 2)
self.assertEqual(t.root.left.left.data, 1)
self.assertEqual(t.root.left.right.data, 3)
self.assertEqual(t.root.right.data, 6)
self.assertEqual(t.root.right.left.data, 5)
self.assertEqual(t.root.right.right.data, 7)
print("\n")