285. Inorder Successor in BST

Sharko Shen
Data Science & LeetCode for Kindergarten
2 min readMay 30, 2023

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.

Example 1:

Input: root = [2,1,3], p = 1
Output: 2
Explanation: 1's in-order successor node is 2. Note that both p and the return value is of TreeNode type.

Example 2:

Input: root = [5,3,6,2,4,null,null,1], p = 6
Output: null
Explanation: There is no in-order successor of the current node, so the answer is null.

思路Coding化:

class Solution:
def inorderSuccessor(self, root: TreeNode, p: TreeNode) -> Optional[TreeNode]:
successor = None

#不斷往下找,當root = None停止
while root:
#當p大於root,代表只能往右邊的樹尋找
if root.val <= p.val:
root = root.right
#當p小於root,代表答案可能在左邊的樹,root此時可能為答案,因此更新successor
#注意這題是要回傳node型態
else:
successor = root
root = root.left
return successor

#O(n)
#O(1)

Time Complexity: O(n)

Space Complexity: O(1)

--

--

Sharko Shen
Data Science & LeetCode for Kindergarten

Thinking “Data Science for Beginners” too hard for you? Check out “Data Science for Kindergarten” !