import java.util.*;

class Node {
    int val;
    Node left;
    Node right;
    Node() {}
    Node(int val) { 
        this.val = val; 
    }
    Node(int val, Node left, Node right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

public class Main {
    public static Node createBinaryTree(int[] arr) {
        if (arr == null || arr.length == 0) return null;

        Node root = new Node(arr[0]);
        Queue<Node> queue = new LinkedList<>();
        queue.add(root);

        int i = 1;
        while (!queue.isEmpty() && i < arr.length) {
            Node current = queue.poll();

            if (i < arr.length && arr[i] != -1) {
                current.left = new Node(arr[i]);
                queue.add(current.left);
            }
            i++;

            if (i < arr.length && arr[i] != -1) {
                current.right = new Node(arr[i]);
                queue.add(current.right);
            }
            i++;
        }

        return root;
    }
    public static Node prev=null,first=null,second=null;
    public static void inorder(Node root) {
        if(root==null)
            return ;
        inorder(root.left);
        if(prev!=null&&root.val<prev.val){
            if(first==null)
                first=prev;
            second=root;
        }
        prev=root;
        inorder(root.right);
    }

    static void printInorder(Node node) {
        if (node == null)
            return;
        printInorder(node.left);
        System.out.print(node.val+" ");
        printInorder(node.right);
    }

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s[] = sc.nextLine().split(" ");
        int n = s.length;
        int arr[] = new int[n];
        for(int i=0;i<n;i++){
            if(! s[i].equals("N"))
                arr[i]=Integer.parseInt(s[i]);
            else
                arr[i]=-1;
        }
        Node root=createBinaryTree(arr);
        inorder(root);
        int temp=first.val;
        first.val=second.val;
        second.val=temp;
        printInorder(root);
    }
}

Embed on website

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