题目描述:
Given a binary search tree and a node in it, find the in-order successor of that node in the BST.
Note: If the given node has no in-order successor in the tree, return null.
Example 1:
Input: root = [2,1,3], p = 1
2
/ \
1 3
Output: 2
Example 2:
Input: root = [5,3,6,2,4,null,null,1], p = 6
5
/ \
3 6
/ \
2 4
/
1
Output: null
二叉树迭代实现中序遍历,维护pre和cur两个指针,当pre等于目标节点时,cur等于下一个节点。
class Solution {
public:
TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {
cur=root;
pre=NULL;
while(cur!=NULL||!s.empty())
{
while(cur!=NULL)
{
s.push(cur);
cur=cur->left;
}
if(s.size()>0)
{
cur=s.top();
if(pre==p) return cur;
s.pop();
pre=cur;
cur=cur->right;
}
}
return NULL;
}
private:
TreeNode* cur;
TreeNode* pre;
stack<TreeNode*> s;
};