题解 | #二叉树的下一个结点#
二叉树的下一个结点
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);
}
};

