#include <cstddef>
class Solution {
public:
vector<TreeLinkNode*> nodes;
//用户得到的输入只有一个 子树根节点
TreeLinkNode* GetNext(TreeLinkNode* pNode) {
TreeLinkNode* root = pNode;
//获取根节点
//顺着next指针一直找就可以了,因为next只会从子节点指向根节点
while(root->next )
root = root->next;
//中序遍历用nodes存储所有节点指针
InOrder(root);
int n = nodes.size();
for(int i = 0; i<n-1;i++)
{
TreeLinkNode* cur = nodes[i];
//将节点进行匹配
if(pNode == cur)
{
//如果有匹配到给出的节点,则下一个节点即返回结果
return nodes[i+1];
}
}
//否则如果没有下一个节点则返回NULL
return NULL;
}
//中序遍历
void InOrder(TreeLinkNode* root)
{
if(root==NULL)
return;
InOrder(root->left);
nodes.push_back(root);
InOrder(root->right);
}
};
标签:结点,next,TreeLinkNode,二叉树,JZ8,nodes,root,节点
From: https://www.cnblogs.com/H43724334/p/18151684