★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址: http://www.javashuo.com/article/p-bwdwdwhq-kx.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
Given a binary search tree and a node in it, find the in-order successor of that node in the BST.node
The successor of a node p
is the node with the smallest key greater than p.val
.git
Example 1:github
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
Note:spa
null
.給定一個二進制搜索樹及其節點,在BST中查找該節點的順序繼承者。code
節點p的後續節點是鍵最小大於p.val的節點。htm
例 1:blog
輸入: root = [2,1,3], p = 1 輸出: 2 說明:1的順序繼承節點爲2。請注意,p和返回值都是treenode類型。
例 2:繼承
輸入: root = [5,3,6,2,4,null,null,1], p = 6 輸出: null
說明:當前節點沒有按順序的後續節點,所以答案爲空。
注:
Solution:
1 public class TreeNode { 2 public var val: Int 3 public var left: TreeNode? 4 public var right: TreeNode? 5 public init(_ val: Int) { 6 self.val = val 7 self.left = nil 8 self.right = nil 9 } 10 } 11 12 class Solution { 13 func inorderSuccessor(_ root: TreeNode?,_ p: TreeNode?) -> TreeNode? { 14 var root = root 15 var res:TreeNode? = nil 16 while(root != nil) 17 { 18 if root!.val > p!.val 19 { 20 res = root 21 root = root?.left 22 } 23 else 24 { 25 root = root?.right 26 } 27 } 28 return res 29 } 30 }