class Node:
def __init__(self, data):
self.__LeftPointer = -1
self.__Data = data
self.__RightPointer = -1
def GetLeft(self):
return self.__LeftPointer
def GetRight(self):
return self.__RightPointer
def GetData(self):
return self.__Data
def SetLeft(self, p):
self.__LeftPointer = p
def SetRight(self, p):
self.__RightPointer = p
class TreeClass:
def __init__(self):
self.__Tree = [Node(-1) for _ in range(20)]
self.__FirstNode = -1
self.__NumberNodes = 0
def InsertNode(self, newNode):
if self.__NumberNodes == 0:
self.__Tree[0] = newNode
self.__FirstNode = 0
self.__NumberNodes += 1
return
self.__Tree[self.__NumberNodes] = newNode
current = self.__FirstNode
direction = ""
while current != -1:
previous = current
if newNode.GetData() < self.__Tree[current].GetData():
current = self.__Tree[current].GetLeft()
direction = "left"
else:
current = self.__Tree[current].GetRight()
direction = "right"
if direction == "left":
self.__Tree[previous].SetLeft(self.__NumberNodes)
else:
self.__Tree[previous].SetRight(self.__NumberNodes)
self.__NumberNodes += 1
def OutputTree(self):
if self.__NumberNodes == 0:
print("No nodes")
return
for i in range(self.__NumberNodes):
print(self.__Tree[i].GetLeft(), self.__Tree[i].GetData(),
self.__Tree[i].GetRight())