package com.interview.algorithms.list;
import com.interview.basics.model.collection.list.Node;
/**
* Created_By: stefanie
* Date: 14-11-9
* Time: 上午11:08
*/
public class C3_21_ReverseLinkListBetweenMN {
public static Node reverseBetween(Node head, int m, int n) {
Node newHead = new Node(0);
newHead.next = head;
reverseBetween(head, m, n, 1, newHead);
return newHead.next;
}
private static Node reverseBetween(Node node, int m, int n, int count, Node prev){
if(count < m){
reverseBetween(node.next, m, n, count + 1, node);
} else if(count >= m && count < n){
prev = reverseBetween(node.next, m, n, count + 1, prev);
prev.next = node;
} else if(count == n){
prev.next.next = node.next;
prev.next = node;
}
return node;
}
}