当前位置: 首页 > news >正文

leetcode日记(100)填充每个节点的下一个右侧节点指针

和层序遍历差不多的思路,将节点储存在队列里,一边取出节点一边放入取出节点的左右节点,直到队列空。

/*
// Definition for a Node.
class Node {
public:
    int val;
    Node* left;
    Node* right;
    Node* next;

    Node() : val(0), left(NULL), right(NULL), next(NULL) {}

    Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}

    Node(int _val, Node* _left, Node* _right, Node* _next)
        : val(_val), left(_left), right(_right), next(_next) {}
};
*/

class Solution {
public:
    Node* connect(Node* root) {
        if(root==NULL) return root;
        int record=1;
        queue<Node*> n;
        n.push(root);
        while(!n.empty()){
            Node* node=NULL;
            for(int i=0;i<record;i++){
                Node* first=n.front();
                if(first->left){
                    n.push(first->left);
                    n.push(first->right);
                }
                if(node) node->next=first;
                node=first;
                n.pop();
            }
            record*=2;
        }
        return root;
    }
};

本来我是写的vector,但是发现queue更好,完美匹配。

以及看了答案发现还有一种很机智的思路。

大概就是next有两种取法(对于root和其left、right),一种是left的next为right,一种是right的next为root的next的left。

如此就可以递归。

/*
// Definition for a Node.
class Node {
public:
    int val;
    Node* left;
    Node* right;
    Node* next;

    Node() : val(0), left(NULL), right(NULL), next(NULL) {}

    Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}

    Node(int _val, Node* _left, Node* _right, Node* _next)
        : val(_val), left(_left), right(_right), next(_next) {}
};
*/

class Solution {
public:
    Node* connect(Node* root) {
        Node* result=root;
        while(root){
            Node* record=root->left;
            while(root&&root->left){
                root->left->next=root->right;
                if(root->next) root->right->next=root->next->left;
                root=root->next;
            }
            root=record;
        }
        return result;
    }
};

相关文章:

  • go程序调用k8s pod副本的名称IP手动赋值给configmap的参数
  • 麒麟服务器操作系统Go环境部署手册
  • 麒麟服务器操作系统Redis部署手册
  • BGP实验(二)路由反射器
  • Spring Cloud Config - 动态配置管理与高可用治理
  • LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS 论文阅读
  • uniapp移动端图片比较器组件,仿英伟达官网rtx光追图片比较器功能
  • ⚡️Jolt -- 通过JSON配置来处理复杂数据转换的工具
  • [Java实战]Spring Boot服务CPU 100%问题排查:从定位到解决
  • JS - 重点JS方法温故而知新
  • ROS2 系统架构
  • Linux调度器 --- 负载均衡的存在的问题
  • AI 助力医学统计:复杂临床数据处理的 “救星”
  • 【Oracle】19c数据库控制文件多路径配置
  • Docker 容器指标搜集工具cAdvisor
  • 一款基于Python的从常规文档里提取图片的简单工具开发方案
  • 用 Python 进行比特币数据分析:从入门到实战
  • k8s 配置两个deployment主机级别互斥部署
  • 硬件驱动——51单片机:寄存器、LED、动态数码管
  • Google Cloud Run 如何实现无服务器(Serverless)部署?
  • 连续两个交易日涨停,华夏幸福:生产经营活动正常,不存在影响股价波动的重大事宜
  • 媒体评教师拎起学生威胁要扔下三楼:师风师德不能“悬空”
  • 大外交丨3天拿下数万亿美元投资,特朗普在中东做经济“加法”和政治“减法”
  • 高途一季度净利润同比增长1108%: “与吴彦祖一起学英语”短时间内就实现了盈利
  • 车建兴被留置:跌落的前常州首富和红星系重整迷路
  • 最高人民法院原副院长唐德华逝世,享年89岁