leetcode_c++:树:Populating Next Right Pointers in Each Node II(117)

来源:互联网 发布:淘宝香火符咒西极飞飞 编辑:程序博客网 时间:2024/06/01 10:32

Follow up for problem “Populating Next Right Pointers in Each Node”.

What if the given tree could be any binary tree? Would your previous solution still work?

Note:

You may only use constant extra space.
For example,
Given the following binary tree,

        1        /  \      2    3     / \    \    4   5    7

After calling your function, the tree should look like:

        1 -> NULL       /  \      2 -> 3 -> NULL     / \    \    4-> 5 -> 7 -> NULL

class Solution {public:    void connect(TreeLinkNode *root) {        TreeLinkNode header(0);        header.next = root;        TreeLinkNode *cur, *prev;        while (header.next) {            // current header's link is already populated            // following will make a new children-link to header            cur = header.next;            prev = &header;            header.next = nullptr;            for (; cur; cur = cur->next) {                if (cur->left != nullptr) {                    prev->next = cur->left;                    prev = prev->next;                }                if (cur->right != nullptr) {                    prev->next = cur->right;                    prev = prev->next;                }            }        }    }};
0 0
原创粉丝点击