中序遍歷的下一個節點
如果該節點有右子樹,則右子樹的最左節點爲所求
如果沒有右孩子節點,檢查父節點
如果父節點的左孩子是自身,則父節點爲所求
如果父節點的右孩子是自身,則檢查父節點的父節點直到某個節點爲其父節點的左孩子,其父節點爲所求/*
struct TreeLinkNode {
int val;
struct TreeLinkNode *left;
struct TreeLinkNode *right;
struct TreeLinkNode *next;
TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) {
}
};
*/
class Solution {
public:
TreeLinkNode* GetNext(TreeLinkNode* pNode)
{
if (pNode==NULL)
return NULL;
if (pNode->right!=NULL)
{
TreeLinkNode* temp = pNode->right;
while(temp->left!=NULL)
temp = temp->left;
return temp;
}
if (pNode->next!=NULL)
{
if (pNode->next->left == pNode)
return pNode->next;
if (pNode->next->right == pNode)
{
TreeLinkNode* temp = pNode->next;
while(temp->next!=NULL)
{
if(temp == temp->next->left)
return temp->next;
temp = temp->next;
}
return NULL;
}
}
return NULL;
}
};