053. 二叉搜索树中的中序后继
题目描述
给定一棵二叉搜索树和其中的一个节点 p
,找到该节点在树中的中序后继。如果节点没有中序后继,请返回 null
。
节点 p
的后继是值比 p.val
大的节点中键值最小的节点,即按中序遍历的顺序节点 p
的下一个节点。
示例1
1 2 3 |
|
示例 2:
1 2 3 |
|
提示:
- 树中节点的数目在范围 \([1, 10^4]\) 内。
- \(-10^5 \le Node.val \le 10^5\)
- 树中各节点的值均保证唯一。
思路
中序遍历
为了找到二叉搜索树中的节点 p 的中序后继,最直观的方法是中序遍历。由于只需要找到节点 p 的中序后继,因此不需要维护完整的中序遍历序列,只需要在中序遍历的过程中维护上一个访问的节点和当前访问的节点。如果上一个访问的节点是节点 p,则当前访问的节点即为节点 p 的中序后继。
如果节点 p 是最后被访问的节点,则不存在节点 p 的中序后继,返回 null。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|