package com.interview.tree;
/**
* http://www.geeksforgeeks.org/populate-inorder-successor-for-all-nodes/
*/
public class PopulateInOrderSuccessor {
private void populate(Node root, NodeRef nodeRef){
if(root == null){
return;
}
populate(root.right,nodeRef);
root.next = nodeRef.node;
nodeRef.node = root;
populate(root.left,nodeRef);
}
public void populate(Node root){
NodeRef nodeRef = new NodeRef();
populate(root,nodeRef);
}
public void print(Node root){
if(root == null){
return;
}
System.out.println(root.data);
print(root.next);
}
public static void main(String args[]){
BinaryTree bt = new BinaryTree();
Node head = null;
head = bt.addNode(10, head);
head = bt.addNode(15, head);
head = bt.addNode(5, head);
head = bt.addNode(7, head);
head = bt.addNode(19, head);
head = bt.addNode(20, head);
head = bt.addNode(-1, head);
head = bt.addNode(21, head);
PopulateInOrderSuccessor pio = new PopulateInOrderSuccessor();
pio.populate(head);
while(head.left != null){
head = head.left;
}
pio.print(head);
}
}