★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(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 }