def insert_into_conditional_fp_tree(self, pattern_list, count_of_pattern, conditional_fp_tree, conditional_header_table): # return if patternArrayList is empty if not pattern_list: return item_to_add_to_tree = pattern_list[0] new_node = None done = False for child in conditional_fp_tree.children: if child.item == item_to_add_to_tree: new_node = child child.count += count_of_pattern done = True break if not done: for header_pointer in conditional_header_table: # remove non frequents too if header_pointer.item == item_to_add_to_tree: new_node = FPTree(item_to_add_to_tree) new_node.count = count_of_pattern new_node.parent = conditional_fp_tree conditional_fp_tree.children.append(new_node) while header_pointer.next is not None: header_pointer = header_pointer.next header_pointer.next = new_node pattern_list.pop(0) self.insert_into_conditional_fp_tree(pattern_list, count_of_pattern, new_node, conditional_header_table)
def insert_into_tree(self, transaction_sorted_by_frequency, fp_tree): # return when list is empty if not transaction_sorted_by_frequency: return item_to_add_to_tree = transaction_sorted_by_frequency[0] new_node = None done = False for child in fp_tree.children: if child.item == item_to_add_to_tree: new_node = child child.count += 1 done = True break if not done: new_node = FPTree(item_to_add_to_tree) new_node.count = 1 new_node.parent = fp_tree fp_tree.children.append(new_node) for header_pointer in self.header_table: if header_pointer.item == item_to_add_to_tree: while header_pointer.next is not None: header_pointer = header_pointer.next header_pointer.next = new_node transaction_sorted_by_frequency.pop(0) self.insert_into_tree(transaction_sorted_by_frequency, new_node)