import java.util.*;
import java.lang.*;
import java.io.*;


class Main {
    static class Node{
            Node parent;
            int value; 
            Node left;
            Node right;
            public Node(int value) {
                this.parent = null;
                this.value = value;
                this.left = null;
                this.right = null;
            }
        }

    static Node Insert(Node node, int value) {
        if (node == null){
            return new Node(value);
        } else {
            if (value < node.value) {
            node.left = Insert(node.left, value);
            node.left.parent = node;
            }
            if (value > node.value) {
                node.right = Insert(node.right, value);
                node.right.parent = node;
            }
        }    
        return node;
    }

    static Node Search(Node node, int value) {
        if (node == null || node.value == value) {
            return node;
        } else {
            if (value < node.value) return Search(node.left, value);
            else return Search(node.right, value);
        }
        // if (node == null || node.value == value) return node;
        // if (value < node.value) return Search(node.left, value);
        // else return Search(node.right, value);
    }

    static Node leftRotate(Node root, Node p) {
        Node new_p = p.right;
        
        p.right = new_p.left;
        if(new_p.left != null) new_p.left.parent = p.right;

        if (p.parent == null) root = new_p;
        else if (p.parent.left == p) {
            p.parent.left = new_p;
            new_p.parent = p.parent;
            }
        else if(p.parent.right == p) {
            p.parent.right = new_p;
            new_p.parent = p.parent;
        }

        new_p.left = p; 
        p.parent = new_p;
        return root;
    }

    static void preOrder(Node node) {
        if (node == null) return;
        System.out.println(node.value);
        preOrder(node.left);
        preOrder(node.right);
    }
    
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());

        Node root = null;
        for (int i=0; i<N; i++) {
            int t = Integer.parseInt(st.nextToken());
            root = Insert(root, t);
        }

        int a = Integer.parseInt(br.readLine());

        Node target = Search(root, a);
        // System.out.println(target.value);
        root = leftRotate(root,target);
        
        preOrder(root);
        
    }
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: