def button_clicked(self):#кнопка подбора фильмов по жанру и году self.ui.listFilms.clear() T = BinarySearchTree()#создание объекта бинарного дерева поиска first = 0 second = 0 if not self.ui.firstYear.text().isdigit():#проверка на корректный ввод года first = 1920 else: first = int(self.ui.firstYear.text()) if not self.ui.secondYear.text().isdigit():#проверка на корректный ввод года second = 2019 else: second = int(self.ui.secondYear.text()) l =[[ "аниме",[]],["фэнтези",[]],["мелодрама",[]],["биография",[]],["боевик",[]], ["вестерн",[]],["военный",[]],["детектив",[]],["документальный",[]],["драма",[]], ["мультфильм",[]],["приключения",[]],["семейный",[]], ["триллер",[]], ["ужасы",[]], ["фантастика",[]]]#список жанров file = open('C:\\Users\\alexa\\Documents\\Films.txt', 'r',encoding = 'UTF-8') for line in file:#добавление фильмов в список жанров A = line.split(', ') for j in range(len(l)): if A[2]==l[j][0]: l[j][1].append(A) diclist = [] for k in range(first,second+1): diclist.append(k) dic =dict.fromkeys(diclist[:])#создание словаря годов for k in range(first,second+1):#добавление информации в словарь d = [] for j in range(len(l)): if(l[j][1]!=[]): for q in range((len(l[j][1]))): if int(l[j][1][q][1])==k: d.append((l[j][1][q])) dic.update({int(k):d}) for el in dic.items():#добавление элементов словаря в бинарное дерево T[el[0]] = el for que in range(first,second+1):#поиск в бинарном дереве нужного года и жанра if T[que][1] is not None : for t in range(len(T[que][1])): if str(T[que][1][t][2])==self.ui.Type3.currentText(): self.ui.listFilms.addItem("Название: " + str(T[que][1][t][0])+", Жанр: " +str(T[que][1][t][2])+", Год выпуска: " +str(T[que][1][t][1])+", Режиссёр: " +str(T[que][1][t][3])) elif str(self.ui.Type3.currentText()) == "любой": self.ui.listFilms.addItem("Название: " + str(T[que][1][t][0])+", Жанр: " +str(T[que][1][t][2])+", Год выпуска: " +str(T[que][1][t][1])+", Режиссёр: "+str(T[que][1][t][3]))
def preOrderTraversal(root): if root is None: return None result = [] stack = [root] while stack: currNode = stack.pop() result.append(currNode.value) if currNode.right: stack.append(currNode.right) if currNode.left: stack.append(currNode.left) return result BST = BinarySearchTree(6) BST.insert(4) BST.insert(9) BST.insert(5) BST.insert(2) BST.insert(8) BST.insert(12) result = preOrderTraversal(BST.root) print(result)
def __init__(self, distributorName): self.distributorName = distributorName self.includes = BinarySearchTree() self.excludes = [BinarySearchTree()]
from Tree import BinarySearchTree my_tree = BinarySearchTree() my_tree.insert(100) my_tree.insert(200) my_tree.insert(50) my_tree.insert(75) my_tree.insert(150) my_tree.inorder(my_tree.root)