码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode || 117、Populating Next Right Pointers in Each Node II

时间:2015-04-24 10:35:50      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:leetcode   二叉树   层序遍历   queue   

problem:

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

Hide Tags
 Tree Depth-first Search
题意:是上一题的普适版,不要求满树!每层节点链接起来,类似B*树 

thinking:

(1)上一题说过,采用BFS 而不是DFS:http://blog.csdn.net/hustyangju/article/details/45242365

(2)采用queue结构存储每层的结点

code:

class Solution {
public:
    void connect(TreeLinkNode *root) {
        if(root==NULL)
            return;
        queue<TreeLinkNode*> queue0;
        queue0.push(root);
        level_visit(queue0);
        return;
    }
protected:
    void level_visit(queue<TreeLinkNode*> queue1)
    {
        if(queue1.empty())
            return;
        queue<TreeLinkNode*> queue2=queue1;
        queue<TreeLinkNode*> queue3;
        TreeLinkNode *tmp=queue1.front();
        queue1.pop();
        tmp->next=NULL;
        while(!queue1.empty())
        {
            TreeLinkNode *tmp2=queue1.front();
            queue1.pop();
            tmp2->next=NULL;
            tmp->next=tmp2;
            tmp=tmp2;
        }
        while(!queue2.empty())
        {
            TreeLinkNode *node=queue2.front();
            queue2.pop();
            if(node->left!=NULL)
                queue3.push(node->left);
            if(node->right!=NULL)
                queue3.push(node->right);  
        }
        level_visit(queue3);
    }

};


leetcode || 117、Populating Next Right Pointers in Each Node II

标签:leetcode   二叉树   层序遍历   queue   

原文地址:http://blog.csdn.net/hustyangju/article/details/45242577

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!