/* 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; } };
要想到用全局变量和写递归中序遍历的辅助方程。