先找到根,然后中序遍历:
在这里插入代码片/*
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:
queue<TreeLinkNode*> q;
void solve(TreeLinkNode* a,TreeLinkNode* b){
if(b==NULL) return ;
solve(a,b->left);
q.push(b);
if(b==a) while(!q.empty()) q.pop();
solve(a,b->right);
}
TreeLinkNode* GetNext(TreeLinkNode* pNode)
{
TreeLinkNode* root = pNode;
TreeLinkNode* fa = root->next;
while(fa!=NULL){
root = root->next;
fa = root->next;
}
solve(pNode,root);
return q.empty()?NULL:q.front();
}
};