Given a binary search tree and a node in it, find the in-order successor of that node in the BST.
Note: If the given node has no in-order successor in the tree, return null
.
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * public int val; 5 * public TreeNode left; 6 * public TreeNode right; 7 * public TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 public TreeNode InorderSuccessor(TreeNode root, TreeNode p) { 12 // clarify questions: 1. what if P is null? 2. what if P doesn‘t exist in the tree? 3. what if p is the last node in inorder // traverse? 13 // idea: since it‘s a BST, we need to use the feature of BST 14 15 if (root == null || p == null) return null; 16 17 if (root.val <= p.val) 18 { 19 return InorderSuccessor(root.right, p); 20 } 21 else 22 { 23 var left = InorderSuccessor(root.left, p); 24 25 return left == null ? root : left; 26 } 27 } 28 }