package com.interview.linklist; /** * http://www.geeksforgeeks.org/delete-nodes-which-have-a-greater-value-on-right-side/ * Test cases * Sorted list * reverse sorted list * 0 1 or more nodes in the list */ public class DeleteNodeWithGreaterValueOnRight { private int maxFound = Integer.MIN_VALUE; public Node deleteNodes(Node head){ if(head == null){ return null; } Node nextNode = deleteNodes(head.next); if(head.data > maxFound){ maxFound = head.data; } if(maxFound > head.data){ return nextNode; } head.next = nextNode; return head; } public static void main(String args[]){ DeleteNodeWithGreaterValueOnRight dng = new DeleteNodeWithGreaterValueOnRight(); LinkList ll = new LinkList(); Node head = null; head = ll.addNode(12, head); head = ll.addNode(15, head); head = ll.addNode(10, head); head = ll.addNode(11, head); head = ll.addNode(5, head); head = ll.addNode(6, head); head = ll.addNode(2, head); head = ll.addNode(3, head); head = dng.deleteNodes(head); ll.printList(head); } }