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

二叉树的下一个结点

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:
    TreeLinkNode* GetNext(TreeLinkNode* pNode) {
        if(!pNode) return NULL;
        TreeLinkNode* root = pNode;
        while(root->next){
            root = root->next;
        }
        vector<TreeLinkNode*> list;
        leftTraverse(root, list);
        for(int i = 0; i < list.size() ; i++){
           if(list[i] == pNode && i != list.size() -1)
               return list[i+1];
        }
        return NULL;
    }
    void leftTraverse(TreeLinkNode* root, vector<TreeLinkNode*> &list){
        if(!root) return;
        leftTraverse(root->left, list);
        list.push_back(root);
        leftTraverse(root->right, list);
    }
};

全部评论

相关推荐

06-07 00:00
已编辑
腾讯_后端开发
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务