二叉树的下一个结点

2020-07-24  本文已影响0人  Crazy_Bear
/*
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 == nullptr) return nullptr;
        else if(pNode->right)
        {
            TreeLinkNode * p = pNode->right;
            while(p->left)
                p = p->left;
            return p;
        }
        else if(pNode->next && pNode->next->right == pNode){
            TreeLinkNode * p = pNode;
            while(p->next && p->next->right == p)
                p=p->next;
            return p->next;    
        }
        else if(pNode->next && pNode->next->left == pNode)
            return pNode->next;
        else return nullptr;
        
    }
};
上一篇 下一篇

猜你喜欢

热点阅读