# LeetCode – Inorder Successor in BST II (Java)

Given a binary search tree and a node in it, find the in-order successor of that node in the BST.

The successor of a node p is the node with the smallest key greater than p.val. You will have direct access to the node but not to the root of the tree. Each node will have a reference to its parent node. A node is defined as the following:

```// Definition for a Node. class Node { public int val; public Node left; public Node right; public Node parent; }; */```

Java Solution

```public Node inorderSuccessor(Node x) { Node result = null;   //case 1: right child is not null -> go down to get the next Node p = x.right; while(p!=null){ result = p; p = p.left; }   if(result != null){ return result; }   //case 2: right child is null -> go up to the parent, //until the node is a left child, return the parent p = x;   while(p!=null){ if(p.parent!=null && p.parent.left==p){ return p.parent; } p = p.parent; }   return null; }``` If the tree is balanced, the time complexity is the height of the tree - O(log(n)). In the worst cast, the time is O(n). Space complexity is constant.

Category >> Algorithms
If you want someone to read your code, please put the code inside <pre><code> and </code></pre> tags. For example:
```<pre><code>
String foo = "bar";
</code></pre>
```