285. Inorder Successor in BST
Published in
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)