public class test17 { public static class Node{ int value; Node left; Node right; Node parent; } public static Node getSuccessorNode(Node node){ if(node == null){ return node; } if(node.right != null){ return getLeftMost(node.right); }else{ Node parent = node.parent; while (parent != null && parent.right == node){ node = parent; parent = node.parent; } return parent; } } public static Node getLeftMost(Node node){ if(node == null){ return node; } while (node.left != null){ node = node.left; } return node; } }