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

LeetCode 116. Populating Next Right Pointers in Each Node

时间:2018-08-30 10:55:30      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:poi   tin   通过   link   tco   class   bsp   中序遍历   col   

直接做的话用中序遍历做即可,但是要求空间复杂度O(1),所以不行

 

方法一:Recursive

和往常的递归写起来不太一样,这里一定要先将root的左右儿子连接起来,后面递归才能继续连接。如果不算递归所用栈的空间的话O(1)。

class Solution {
public:
    void connect(TreeLinkNode *root) {
        if (root==NULL) return;
        if (root->left){ // if root has two sons
            root->left->next = root->right;
            if (root->next!=NULL){
                root->right->next = root->next->left;
            }
        }
        connect(root->left);
        connect(root->right);
    }
};

 

方法二:Non-recursive

每次连接下一层的node,通过next遍历这一层的所有节点(这样下一层的节点就都连接好了)。root = root->left 到下一层继续。

class Solution {
public:
    void connect(TreeLinkNode *root) {
        TreeLinkNode *cur;
        while (root!=NULL){
            cur = root;
            while (cur!=NULL){
                if (cur->left!=NULL){
                    cur->left->next = cur->right;
                    if (cur->next){
                        cur->right->next = cur->next->left;
                    }
                }
                cur = cur->next;
            }
            root = root->left;
        }        
    }
};

 

LeetCode 116. Populating Next Right Pointers in Each Node

标签:poi   tin   通过   link   tco   class   bsp   中序遍历   col   

原文地址:https://www.cnblogs.com/hankunyan/p/9557992.html

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