题解
- 找到跟结点,中序遍历即可
AC-Code
/*
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) return NULL;
TreeLinkNode * p = pNode;
while(p->next) { // 寻找根节点
p = p->next;
}
stack<TreeLinkNode*> st;
bool flag = false; // 标记
while(!st.empty() || p) {
while(p) {
st.push(p);
p = p->left;
}
if(!st.empty()) {
p = st.top();
st.pop();
if(flag) return p;
if(pNode == p) flag = true;
p = p->right;
}
}
return NULL;
}
};