【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

Populating Next Right Pointers in Each Node II

原创 2015年11月21日 00:43:24

题目: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


思路:

这一题的思路更为巧妙,我觉得现在尤其注意一点 ,在链表开头加上一个空链表是一个非常好的方法。

对于本题,我似乎忽视的一点就是,对于当前层次的节点,是默认为右边是链接好的,而之前的一个类似题目,是判断当前节点的next 的了的。这个是区别。

具体思路是:在每一层之前加上一个dummy ,如果当前节点存在左孩子,dummy 指向左孩子,存在右孩子,tail 首先指向 下一个,再指向右孩子。直到当前节点为空。

接下来就是之前的dummy 设为当前节点,如此循环反复。

代码:

/**
 * 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 connect(TreeLinkNode *root) {
        TreeLinkNode *dummy=new TreeLinkNode(0);
        
        if(root==NULL)  return;
        
        while(root!=NULL){
            TreeLinkNode *tail=dummy;
            while(root!=NULL){
                if(root->left){
                    tail->next=root->left;
                    tail=tail->next;
                }
                if(root->right){
                    tail->next=root->right;
                    tail=tail->next;
                }
                root=root->next;
            }
            root=dummy->next;
            dummy->next=NULL;//如果没有这句话,那么dummy只是上面那一层的
        }
        delete dummy;
    }
};


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Leetcode_Populating Next Right Pointers in Each Node II

Question link: http://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/ Foll...

LeetCode 117 - Populating Next Right Pointers in Each Node II

Follow up for problem "Populating Next Right Pointers in Each Node". <p style="margin-botto

leetcode -- Populating Next Right Pointers in Each Node I&II -- 再看简单常考

Populating Next Right Pointers in Each Nodehttps://leetcode.com/problems/populating-next-right-point...

[LeetCode]117.Populating Next Right Pointers in Each Node II

【题目】 Follow up for problem "Populating Next Right Pointers in

Populating Next Right Pointers in Each Node II -- LeetCode

原题链接: http://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/  这道题目的要求和Popul...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)