题目描述
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
AC C++ Solution:
class Solution {
public:
TreeLinkNode* GetNext(TreeLinkNode* pNode)
{
if(pNode == NULL)
return NULL;
if(pNode->right != NULL) {
pNode = pNode->right;
while(pNode->left != NULL)
pNode = pNode->left;
return pNode;
}
while(pNode->next != NULL) {
TreeLinkNode *proot = pNode->next;
if(proot->left == pNode)
return proot;
pNode = pNode->next;
}
return NULL;
}
};