/*
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:
    vector<TreeLinkNode*> nodes;
    void InOrder(TreeLinkNode* root) {
        if (root == NULL) return;
        InOrder(root->left);
        nodes.push_back(root);
        InOrder(root->right);
    }
    TreeLinkNode* GetNext(TreeLinkNode* pNode) {
        TreeLinkNode* root = pNode;
        while (root->next) root = root->next;
        InOrder(root);
        int n = nodes.size();
        for (int i = 0; i < n; i++) {
            if (nodes[i] == pNode && i < n - 1) {
                return nodes[i + 1];
            }
        }
        return NULL;
    }
};

要想到用全局变量和写递归中序遍历的辅助方程。