package com.anuragkapur.ctci;
import com.anuragkapur.ds.tree.TreeFactory;
import com.anuragkapur.ds.tree.TreeNode;
/**
* @author: anuragkapur
* @since: 10/05/2014
*/
public class Prob4_6_FindInOrderSuccessor {
static boolean nodeFound = false;
public static TreeNode inOrderSuccessor(TreeNode rootNode, TreeNode successorOf) {
if(rootNode == null)
return null;
TreeNode node = inOrderSuccessor(rootNode.getLeft(), successorOf);
if(node != null)
return node;
if(nodeFound) {
return rootNode;
}
if(rootNode.equals(successorOf))
nodeFound = true;
node = inOrderSuccessor(rootNode.getRight(), successorOf);
return node;
}
public static void main(String[] args) {
TreeNode rootNode = TreeFactory.getBinarySearchTree();
TreeNode nodeToFindSuccessorOf = new TreeNode(5);
TreeNode resultNode = inOrderSuccessor(rootNode, nodeToFindSuccessorOf);
System.out.println(resultNode.getKey());
}
}