二叉树的下一个节点

来源:互联网 发布:软件和信息技术服务业 编辑:程序博客网 时间:2024/05/17 19:21
/*struct TreeLinkNode {    int val;    struct TreeLinkNode *left;    struct TreeLinkNode *right;    struct TreeLinkNode *next;    TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) {    }};*///next是指父节点class Solution {public:    TreeLinkNode* GetNext(TreeLinkNode* pNode)    {        if(pNode==NULL)             return NULL;        if(pNode->right!=NULL)        {            pNode = pNode->right;            while(pNode->left!=NULL)            {                pNode = pNode->left;                }            return pNode;        }        else if(pNode->right==NULL)        {            struct TreeLinkNode* pParent = pNode->next;            struct TreeLinkNode* pCurrent = pNode;            while(pParent!=NULL&&pCurrent==pParent->right)            {                pCurrent=pParent;                pParent=pParent->next;            }            return pParent;        }        return NULL;    }};