# 285. Inorder Successor in BST {%hackmd theme-dark %} Given the root of a binary search tree and a node p in it, return the in-order successor of that node in the BST. If the given node has no in-order successor in the tree, return null. The successor of a node p is the node with the smallest key greater than p.val. > p existing > node v is unique > 4 > 2 6 > 1 3 5 7 >1. to inorde arr [1 2 3 4 5 6 7] find p=6 return next >2. p = 6 > 4 -> 6 has right and return left most >3. p= 3 > 4 -> 2 -> 3 has no children > p = 6 > 4 -> 6 -> 7* -> left = 7 > p = 3 > 4* -> 2 -> 3 -> right = 4 SC O(1) TC O(N) N: node count ```python= def inorderSuccessor(self, root: TreeNode, p: TreeNode) -> Optional[TreeNode]: #p = 6 #p = 3 # edge case and init self.ans = TreeNode(inf) # helper traverse def helper(node): if not node: return val = node.val #4, 2, 3 if p.val < val < self.ans.val: self.ans = node # 4 if val <= p.val: # helper(node.right) # n3 else: helper(node.left) # n2 # ans helper(root) if self.ans.val == inf: return None return self.ans successor = None while root: if root.val > p.val: successor = root root = root.left else: root = root.right return successor ``` > >[5,3,6,2,4,null,null,1] >1 ###### tags: `mock interview` `面試`