leetcode 日经贴,Cpp code -Populating Next Right Pointers in Each Node II

来源:互联网 发布:简单的java程序代码 编辑:程序博客网 时间:2024/05/22 02:03

Populating Next Right Pointers in Each Node II

/** * Definition for binary tree with next pointer. * struct TreeLinkNode { *  int val; *  TreeLinkNode *left, *right, *next; *  TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {} * }; */class Solution {public:    void update(TreeLinkNode *cur, TreeLinkNode *p) {        p = p->next;        while (p) {            if (p->left) {                cur->next = p->left;                cur = cur->next;            }            if (p->right) {                cur->next = p->right;                cur = cur->next;            }            p = p->next;        }        cur->next = NULL;    }    void con(TreeLinkNode *r) {        if (!r) return;        TreeLinkNode *c = r->right? r->right:r->left;        if (r->left && r->right) {            r->left->next = r->right;        }        if (c && !c->next) {            update(c, r);        }        con(r->left);        con(r->right);    }    void connect(TreeLinkNode *root) {        if (!root) return;        root->next = NULL;        con(root);    }};


0 0
原创粉丝点击