def _right_rotate(node): ''' FIXME: Implement this function. The lecture videos provide a high-level overview of tree rotations, and the textbook provides full python code. The textbook's class hierarchy for their AVL tree code is fairly different from our class hierarchy, however, so you will have to adapt their code. ''' if node.left: if node.left.right: new_node = Node(node.left.value) new_node.left = node.left.left new_node.right = Node(node.value) new_node.right.left = node.left.right new_node.right.right = node.right elif node.left.left: new_node = Node(node.left.value) new_node.left = node.left.left new_node.right = Node(node.value) new_node.right.right = node.right else: new_node = node else: new_node = node return new_node
def _right_rotate(node): if node is None or node.left is None: return node newroot = Node(node.left.value) newroot.left = node.left.left new_right = Node(node.value) new_right.right = node.right new_right.left = node.left.right newroot.right = new_right return newroot
def _left_rotate(node): ''' FIXME: Implement this function. The lecture videos provide a high-level overview of tree rotations, and the textbook provides full python code. The textbook's class hierarchy for their AVL tree code is fairly different from our class hierarchy, however, so you will have to adapt their code. ''' if node is None or node.right is None: return node node1 = Node(node.right.value) node1.right = node.right.right leftNode = Node(node.value) leftNode.left = node.left leftNode.right = node.right.left node1.left = leftNode return node1