zoukankan      html  css  js  c++  java
  • 【leetcode】116. 填充每个节点的下一个右侧节点指针

    struct Node* connect(struct Node* root) {
        if (root == NULL) {
            return root;
        }
    
        // 从根节点开始
        struct Node* leftmost = root;
    
        while (leftmost->left != NULL) {
            // 遍历这一层节点组织成的链表,为下一层的节点更新 next 指针
            struct Node* head = leftmost;
    
            while (head != NULL) {
                // CONNECTION 1
                head->left->next = head->right;
    
                // CONNECTION 2
                if (head->next != NULL) {
                    head->right->next = head->next->left;
                }
    
                // 指针向后移动
                head = head->next;
            }
    
            // 去下一层的最左的节点
            leftmost = leftmost->left;
        }
    
        return root;
    }
    struct Node* connect(struct Node* root) {
        if (root == NULL) {
            return root;
        }
    
        // 从根节点开始
        struct Node* leftmost = root;
    
        while (leftmost->left != NULL) {
            // 遍历这一层节点组织成的链表,为下一层的节点更新 next 指针
            struct Node* head = leftmost;
    
            while (head != NULL) {
                // CONNECTION 1
                head->left->next = head->right;
    
                // CONNECTION 2
                if (head->next != NULL) {
                    head->right->next = head->next->left;
                }
    
                // 指针向后移动
                head = head->next;
            }
    
            // 去下一层的最左的节点
            leftmost = leftmost->left;
        }
    
        return root;
    }
  • 相关阅读:
    sys模块
    反射
    动态导入模块
    类的静态属性
    多态
    继承
    组合
    linux系统各个子目录的内容
    mysql安装
    Docker 数据卷操作
  • 原文地址:https://www.cnblogs.com/ganxiang/p/14154938.html
Copyright © 2011-2022 走看看