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;
         }
    }
};
全部评论

相关推荐

头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务