1. 程式人生 > >二叉樹 給定一個節點,求中序遍歷下一個節點

二叉樹 給定一個節點,求中序遍歷下一個節點

題目描述

給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。
using namespace std;
/*
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->right){
             pNode=pNode->right;
             while(pNode->left) pNode=pNode->left;
             return pNode;
         }
         while(pNode->next)
         {
             if(pNode->next->left==pNode) return pNode->next;
             pNode=pNode->next;
         }
         return NULL;
    }
   
};