环境
思路 推倒过程
- 前提: 要求是中序遍历的下一节点
通过代码
class Solution
{
public:
TreeLinkNode *GetNext(TreeLinkNode *pNode)
{
if (pNode == nullptr)
return nullptr;
TreeLinkNode *next = nullptr;
if (pNode->right == nullptr)
{
TreeLinkNode *pCur = pNode;
TreeLinkNode *pParent = pCur->next;
while (pParent != nullptr && pParent->right == pCur)
{
pCur = pParent;
pParent = pParent->next;
}
next = pParent;
}
else
{
TreeLinkNode *pRight = pNode->right;
while (pRight->left != nullptr)
{
pRight = pRight->left;
}
next = pRight;
}
return next;
}
};