设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。
如果指定节点没有对应的“下一个”节点,则返回null。
.
class Solution(object):
def inorderSuccessor(self, root, p):
result = root
while root:
# 当前结点值大于目标结点值
# 说明当前结点值应该在目标结点值遍历序列的后面
# 那就应该去左子树再去找找有没有更合适的
# 有 那就换 没有 说明当前存的结点就是比目标结点大一号那个
if root.val > p.val:
result = root
root = root.left
# 目标值大于当前结点值
# 往右子树再找找
else:
root = root.right
return result if result.val > p.val else None