c++

二叉树的下一个结点

http://www.nowcoder.com/questionTerminal/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 == NULL) return NULL;
         if (pNode->right) {
             TreeLinkNode* p = pNode->right;
             while(p->left) p = p->left;
             return p;
         } else if (pNode->next){
             TreeLinkNode* cur = pNode;
             TreeLinkNode* parent = pNode->next;
             while(parent && cur == parent->right) {
                 cur = parent;
                 parent = cur->next;
             }
             return parent;
         } else {
             return NULL;
         }
    }
};
全部评论

相关推荐

点赞 评论 收藏
分享
02-05 08:49
已编辑
武汉大学 Web前端
野猪不是猪🐗:36k和36k之间亦有差距,ms的36k和pdd的36k不是一个概念
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务