剑指offer08二叉树的下一个节点.
class Solution {
public:
TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {
if(!root) return root;
TreeNode* ret;
TreeNode* CurrentNode = p;
TreeNode* pparentNode = p->pparent;
if(CurrentNode->right){
CurrentNode = CurrentNode -> right;
while(CurrentNode -> left){
CurrentNode = CurrentNode -> left;
}
ret = CurrentNode;
}else{
while((pparentNode) && (CurrentNode == pparentNode->right)){
CurrentNode = pparentNode;
pparentNode = pparentNode ->pparent;
}
ret = pparentNode;
}
return ret;
}
};