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

二叉树的下一个结点

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) {
        
    }
};
*/
#include <vector>
class Solution {
public:
    TreeLinkNode* GetNext(TreeLinkNode* pNode) {
        if(pNode == nullptr)
        {
            return nullptr;
        }
        TreeLinkNode* root = pNode;
        while (root->next) {
            root = root->next;
        }
        vector<TreeLinkNode*> vecRes;
        midTree(root,vecRes);
        for(int i = 0; i < vecRes.size(); ++i)
        {
            if(vecRes[i] == pNode)
            {
                return vecRes[i+1];
            }
        }
        return nullptr;
    }

    void midTree(TreeLinkNode* node, vector<TreeLinkNode*>& res)
    {
        if(node == nullptr)
        {
            return;
        }
        midTree(node->left,res);
        res.push_back(node);
        midTree(node->right,res);
    }

};

1、找到根节点

2、中序遍历

2、返回输入节点的下一个节点

全部评论

相关推荐

03-29 12:10
门头沟学院 C++
挣K存W养DOG:散漫消极者淘汰,一眼坑爹。实习几个月转正的时候说你加班太少,能力还行态度不够积极裁了,马上老实。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务