题解 | #二叉树的下一个结点#

二叉树的下一个结点

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;
    }
};
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务