Lekcja – Binary Search Tree – wprowadzenie

```class Node:

def __init__(self, id, data):
self.id = id
self.data = data
self.left = None
self.right = None
self.depth = None

def __repr__(self):
return f"<{self.id}/{self.depth}>"

def insert(parent, child, depth=0):
if parent is None:
child.depth = depth
return child
elif parent.id == child.id:
return parent
elif child.id < parent.id:
parent.left = insert(parent.left, child, parent.depth+1)
else:
parent.right = insert(parent.right, child, parent.depth+1)
return parent

bst = None
file = open(file_name, 'r')
line_number = 0

while True:
if not line:
break
data = line.split(',')
line_number +=1
print(line_number, data[0], '/', data[1])
node = Node(data[0], data[1])
bst = insert(bst, node)

file.close()
return bst

stock_file = './data/stock.csv'

print('Done')```

Lab

```class City:

def __init__(self, id, country, population):
self.id = id
self.country = country
self.population = population
self.left = None
self.right = None
self.depth = None

def __repr__(self):
return f"<{self.id}/{self.depth}>"

def insert(parent, child, depth=0):
if parent is None:
child.depth = depth
return child
elif parent.id == child.id:
return parent
elif child.id < parent.id:
parent.left = insert(parent.left, child, parent.depth+1)
else:
parent.right = insert(parent.right, child, parent.depth+1)
return parent

bst = None
file = open(file_name, 'r', encoding="utf-8")
line_number = 0

while True:
if not line:
break
data = line.split(',')
line_number +=1

city_ascii = data[1].strip().replace('"','').replace("'",'').replace("`",'').upper()
country = data[4].replace('"','').replace("'",'').replace("`",'').upper()
try:
population = int(data[9].replace('"',''))
except ValueError:
population = -1

print(line_number, city_ascii)
node = City(city_ascii, country, population)
bst = insert(bst, node)

file.close()
return bst

# https://www.kaggle.com/juanmah/world-cities
stock_file = './data/worldcities.csv'