def put(self, key, val):
        root = self.root
        parent = None
        # Traverse up the tree and check if a key exists. If not,
        # put it to the left, otherwise add it to the right.
        while root:
            parent = root
            if root.key == key:
                root = root.right_child
            else:
                root = root.left_child
        # Create a new node and set the parent to the new root
        root = SplayNode(key, val)
        root.parent = parent
        # If it's still none, then make this the root.
        if not parent:
            self.root = root
        # Otherwise, make the right or left child the root.
        elif parent.key == root.key:
            parent.right_child = root
        else:
            parent.left_child = root
        # Splay again with the root.
        self.splay(root)
        # Track all node counts
        self.nodes += 1
%prog ecoli coge_master_table.txt query.bed
dataset/ETHPy150Open christabor/MoAL/MOAL/data_structures/trees/splay_trees.py/SplayTree.put--crossover with--dataset/ETHPy150Open tanghaibao/jcvi/projects/synfind.py/ecoli