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

力扣116. 填充每个节点的下一个右侧节点指针

Problem: 116. 填充每个节点的下一个右侧节点指针

文章目录

  • 题目描述
  • 思路
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路

遍历思想(利用二叉树的先序遍历)

本题目的难点在于对于不同父节点的邻接问题因此我们可以抽象将两两节点为一组(不同父节点的两个孩子节点也抽象为一组),在此基础上再将两个节点连接起来
此题中,我门利用遍历思想(利用先序遍历)先将相同父节点的节点连接起来,再利用父节点将逻辑上抽象的节点练级起来(可能看起来不好懂,直接看代码)

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为二叉树的节点个数

空间复杂度:

O ( h ) O(h) O(h);其中 h h h为二叉树的高度

Code

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

    public Node() {}
    
    public Node(int _val) {
        val = _val;
    }

    public 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 null;
        }
        traverse(root.left, root.right);
        return root;
    }

    
    private void traverse(Node node1, Node node2) {
        if (node1 == null || node1 == null) {
            return;
        }
        // Pre-order position
        // Connect the two input nodes;
        node1.next = node2;
        // Connect two child nodes with the same parent
        traverse(node1.left, node1.right);
        traverse(node2.left, node2.right);
        // Connect two child nodes across parent nodes 
        traverse(node1.right , node2.left);
    }
}

http://www.kler.cn/a/526370.html

相关文章:

  • C++和Python实现SQL Server数据库导出数据到S3并导入Redshift数据仓库
  • Effective Python:(10)
  • 哈希表实现
  • 【Linux】线程互斥与同步
  • 跨境数据传输问题常见解决方式
  • 解决Oracle SQL语句性能问题(10.5)——常用Hint及语法(7)(其他Hint)
  • C#Halcon扇形/圆环缺陷检测(极坐标变换法)
  • 剑指 Offer II 010. 和为 k 的子数组
  • 设计模式Python版 建造者模式
  • 登录管理——认证方案(JWT、拦截器、ThreadLocal、短信验证)
  • 数据采集丨豆瓣电影详细数据的采集与可视化分析(scrapy+mysql+matplotlib+flask)
  • 遗传算法【Genetic Algorithm(GA)】求解函数最大值(MATLAB and Python实现)
  • 零碎的知识点(十二):卷积神经网络CNN通道数的理解!
  • 光伏设计新利器:绿虫仿真设计软件的优势
  • 【教学类-89-04】20250130新年篇04——九叠篆印章(九叠篆站+Python下载图片+Python组合文字)幼儿名字印章
  • CAPL学习资源推荐
  • 7层还是4层?网络模型又为什么要分层?
  • 乐理笔记——DAY02
  • 【深度分析】微软全球裁员计划不影响印度地区,将继续增加当地就业机会
  • 【浏览器 - Mac实时调试iOS手机浏览器页面】
  • AI DeepSeek-R1 Windos 10 环境搭建
  • 数据库简介-01
  • JavaScript 进阶(下)
  • 全国31省空间权重矩阵(地理相邻空间、公路铁路地理距离空间、经济空间)权重矩阵数据-社科数据
  • 【ComfyUI专栏】如何使用Git命令行安装非Manager收录节点
  • 下载一个项目到跑通的大致过程是什么?