题解 | #二叉树的下一个结点#
二叉树的下一个结点
http://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:
vector<TreeLinkNode*> v;
void dfs(TreeLinkNode* root){
if(root == nullptr){
return;
}
dfs(root->left);
v.push_back(root);
dfs(root->right);
}
TreeLinkNode* GetNext(TreeLinkNode* pNode) {
TreeLinkNode* root = pNode;
while (root->next) {
root = root->next;
}
dfs(root);
for(int i = 0;i < v.size();i++){
if(pNode == v[i] && i+1 != v.size()){
return v[i+1];
}
}
return nullptr;
}
};