题解 | #二叉树的下一个结点#
二叉树的下一个结点
https://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e
/* 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) { TreeLinkNode* root = pNode; while (root->next != NULL) root = root->next; vector<TreeLinkNode*> vin; Inorder(root, vin); for (int i = 0; i < vin.size() - 1; i++) { if (pNode == vin.at(i)) { return vin.at(i+1); } } return NULL; } // 中序遍历递归 void Inorder(TreeLinkNode* root, vector<TreeLinkNode*> &vin) { if (root == NULL) return; Inorder(root->left, vin); vin.push_back(root); Inorder(root->right, vin); } };