leetcode No117. Populating Next Right Pointers in Each Node II

来源:互联网 发布:人肉软件 app 编辑:程序博客网 时间:2024/06/06 11:02

Question

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

和leetcode No116. Populating Next Right Pointers in Each Node不同,二叉树不再是完全二叉树

Algorithm

leetcode No116. Populating Next Right Pointers in Each Node解法:
http://blog.csdn.net/u011391629/article/details/52415154

这题有两种解法:
解法一:是延续leetcode No116. Populating Next Right Pointers in Each Node的思路,根据上一层的next信息求解下一层,可以申请一个节点作为这一层的头结点,这样方面知道下一层的头结点

解法二:是二叉树按层遍历,pre结点保存上一个结点信息,然后把结点接起来。

Accepted Code

解法一:

class Solution {public:    void connect(TreeLinkNode *root) {        if(root==NULL)            return;        while(root!=NULL){            TreeLinkNode* nextLevel=new TreeLinkNode(-1);  //for record next level Node            TreeLinkNode* cur=nextLevel;            while(root!=NULL){                if(root->left!=NULL){                    cur->next=root->left;                    cur=cur->next;                }                if(root->right!=NULL){                    cur->next=root->right;                    cur=cur->next;                }                root=root->next;            }            root=nextLevel->next;        }    }};

解法二:

class Solution {public:    void connect(TreeLinkNode *root) {        if(root==NULL)            return;        while(root!=NULL){            TreeLinkNode* nextLevel=new TreeLinkNode(-1);  //for record next level Node            TreeLinkNode* cur=nextLevel;            while(root!=NULL){                if(root->left!=NULL){                    cur->next=root->left;                    cur=cur->next;                }                if(root->right!=NULL){                    cur->next=root->right;                    cur=cur->next;                }                root=root->next;            }            root=nextLevel->next;        }    }};
阅读全文
0 0
原创粉丝点击