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

二叉树的下一个结点

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->right) {
      pNode = pNode->right;
      while (pNode->left) pNode = pNode->left;
      return pNode;
    }
    
    while (pNode->next && pNode->next->right == pNode)
       pNode = pNode->next;
    
    return pNode->next;
  }
};
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务