Created
          November 8, 2013 19:50 
        
      - 
      
 - 
        
Save skdangi/7376589 to your computer and use it in GitHub Desktop.  
    Set in order successor of a node in java http://www.geeksforgeeks.org/inorder-successor-in-binary-search-tree/
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | public class NodeSuccessor { | |
| // Node class;; ignoring getters and setters for simplicity | |
| private static class Node { | |
| public Node(int value) { | |
| this.value = value; | |
| } | |
| Node successor; | |
| Node left; | |
| Node right; | |
| int value; | |
| } | |
| // Holds the last traversed node;; ignoring getters and setters for | |
| // simplicity | |
| private static class NodeHolder { | |
| Node traversedNode; | |
| } | |
| public static void main(String[] args) { | |
| Node node20 = new Node(20); | |
| Node node30 = new Node(30); | |
| Node node40 = new Node(40); | |
| Node node50 = new Node(50); | |
| Node node60 = new Node(60); | |
| Node node90 = new Node(90); | |
| Node node100 = new Node(100); | |
| node20.left = node30; | |
| node20.right = node40; | |
| node30.left = node50; | |
| node30.right = node60; | |
| node60.left = node90; | |
| node60.right = node100; | |
| inOrderTraversal(node20); | |
| setSucc(node20, new NodeHolder()); | |
| inOrderTraversal(node20); | |
| } | |
| public static void setSucc(Node node, NodeHolder nodeHolder) { | |
| if (null == node) {// corner case for NULL Tree | |
| return; | |
| } | |
| if (node.right != null) { | |
| setSucc(node.right, nodeHolder); | |
| } | |
| node.successor = nodeHolder.traversedNode; | |
| nodeHolder.traversedNode = node; | |
| if (node.left != null) { | |
| setSucc(node.left, nodeHolder); | |
| } | |
| } | |
| public static void inOrderTraversal(Node node) { | |
| if (null == node) {// corner case for NULL Tree | |
| return; | |
| } | |
| if (node.left != null) { | |
| inOrderTraversal(node.left); | |
| } | |
| System.out.println("Node :" + node.value + ", " + "Successor " | |
| + (node.successor == null ? null : node.successor.value)); | |
| if (node.right != null) { | |
| inOrderTraversal(node.right); | |
| } | |
| } | |
| } | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment