元宝    LeetCode 116.填充每个节点的下一个右侧节点指针 Kotlin实现
在 Kotlin 中实现 LeetCode 116 非常直观因为 Kotlin/JVM 具有垃圾回收机制不需要像 Rust 那样处理所有权直接像 Python 一样操作对象引用即可同时享受空安全Null Safety带来的编译期检查。以下提供 迭代法 和 递归法 两种 Kotlin 实现。前置LeetCode 中的 Node 定义LeetCode 已内置无需提交class Node(varval: Int) {var left: Node? nullvar right: Node? nullvar next: Node? null}方法一迭代法O(1) 空间推荐利用上一层已经连接好的“next” 指针横向遍历并连接下一层的子节点。class Solution {fun connect(root: Node?): Node? {if (root null) return null// leftmost 指向每一层的最左节点 var leftmost: Node? root // 只要当前层不是叶子层即还有下一层 while (leftmost?.left ! null) { // head 用于遍历当前层的节点 var head: Node? leftmost while (head ! null) { // 1. 同一个父节点左孩子 - 右孩子 head.left!!.next head.right // 2. 不同父节点右孩子 - 下一个节点的左孩子 if (head.next ! null) { head.right!!.next head.next!!.left } // 沿着 next 指针移动到当前层下一个节点 head head.next } // 进入下一层最左边的节点 leftmost leftmost.left } return root }}方法二递归法简洁直观利用递归栈隐式完成层序遍历代码更短。class Solution {fun connect(root: Node?): Node? {if (root?.left ! null) {// 左孩子指向右孩子root.left!!.next root.right// 如果当前节点有 next右孩子指向下一个节点的左孩子 if (root.next ! null) { root.right!!.next root.next!!.left } // 递归处理左右子树 connect(root.left) connect(root.right) } return root }}Kotlin 实现要点解析空安全操作符“?.”安全调用如果对象为“null” 则返回“null” 而不抛异常如“leftmost?.left ! null”。“!!”非空断言在逻辑上已经确定不为“null” 时使用如“head.left!!”相当于告诉编译器“相信我这里不是 null”。“var head: Node? leftmost”声明可空的变量方便在“while” 循环中修改引用。2. 无所有权负担与 Rust 不同Kotlin 中直接通过“.next ” 赋值即可修改指针不需要“borrow_mut” 或“Rc::clone”写起来和 Python 一样简洁。3. 尾递归优化虽然递归解法没有显式加“tailrec”因为有两个递归调用不是尾递归但 Kotlin/JVM 的栈深度对于 O(\log N) 的完美二叉树完全足够。复杂度分析时间复杂度O(N)每个节点仅访问一次。空间复杂度迭代法O(1)只使用固定数量的指针。递归法O(log N)递归调用栈的深度树的高度。你可以直接把“class Solution” 里的代码复制到 LeetCode Kotlin 编辑器提交。需要我帮你把这段代码改成 LeetCode 117普通二叉树 的 Kotlin 版本或者对比一下 Kotlin 和 Rust 实现上的核心差异 吗

相关新闻

元宝    LeetCode 116.填充每个节点的下一个右侧节点指针 Golang实现

元宝 LeetCode 116.填充每个节点的下一个右侧节点指针 Golang实现

在 Go (Golang) 中实现 LeetCode 116 非常直接。Go 使用指针操作对象,没有 Rust 那样的所有权负担,也没有 Python/Kotlin 那样的类继承体系,直接通过结构体指针修改 “Next” 字段即可。 以下提供 迭代法 和 递归法 两种 Golang 实现。 前置&…

2026/9/27 22:51:48 阅读更多 →
【Java】多态

【Java】多态

多态知识点多态的概念通俗:同一件事,不同对象去做,产生不同结果例子:动物都有eat()行为,猫 eat 是吃鱼,狗 eat 是吃骨头Java 实现多态的 3 个必要条件必须存在继承关系(子类 extends 父类&#…

2026/9/27 22:51:48 阅读更多 →
一文搞懂网站图标的制作h1优化代码报价单

一文搞懂网站图标的制作h1优化代码报价单

一文搞懂网站图标的制作h1优化代码报价单 网站做好了没人访问,这大概是每个站长最头疼的事。你花了钱做页面,盯着后台数据,发现流量像死水一样不动,甚至连搜索引擎收录都慢吞吞的。这时候,很多人会忽略一个细节:你的H1标签和图标(Favicon)…

2026/9/27 22:50:47 阅读更多 →

最新新闻

信用风险建模实战:Lasso特征筛选与GBDT违约预测

信用风险建模实战:Lasso特征筛选与GBDT违约预测

简介:围绕债券违约预测研究提供完整复现方案,面向金融量化分析、机器学习初学者及信用风险研究人员。基于2017年7月17日前债券违约事件与宏观流动性数据构建数据集,采用Lasso回归筛选特征,对比带L2惩罚项的逻辑回归、SVM、神经网络…

2026/9/27 23:35:18 阅读更多 →
Cap 内部工作原理:自托管 CAPTCHA 的 SHA-256 工作量证明与埋点挑战全流程解析

Cap 内部工作原理:自托管 CAPTCHA 的 SHA-256 工作量证明与埋点挑战全流程解析

网络安全应用安全后端 【免费下载链接】cap Free, open-source and self-hosted CAPTCHA alternative to reCAPTCHA. Privacy-first and powered by proof-of-work and instrumentation challenges. 项目地址: https://gitcode.com/gh_mirrors/cap13/cap 点击查看 免…

2026/9/27 23:35:18 阅读更多 →
别被建站公司坑了3000块,这3个免费工具搞定wordpress订单提醒功能

别被建站公司坑了3000块,这3个免费工具搞定wordpress订单提醒功能

别被建站公司坑了3000块,这3个免费工具搞定wordpress订单提醒功能 找建站公司,最怕的就是“功能定制费”。明明只是加个订单提醒,对方张口就是三千块起步,还得等一周。很多设计师转做前端或独立开发者,其实完全没必要为这种基础功能买单。…

2026/9/27 23:35:18 阅读更多 →
PyTorch全连接网络实现垃圾邮件分类:从文本清洗到模型训练

PyTorch全连接网络实现垃圾邮件分类:从文本清洗到模型训练

简介:面向毕业设计及机器学习初学者,提供一套基于Pytorch的MLP全连接神经网络垃圾邮件分类完整工程,内含可直接运行的Python源码、spambase邮件数据集及配套图表。工程完成有监督学习下的二分类任务,利用PytorchViz将神经网络结构…

2026/9/27 23:35:18 阅读更多 →
PyTorch全连接神经网络垃圾邮件分类实战:从文本清洗到模型训练

PyTorch全连接神经网络垃圾邮件分类实战:从文本清洗到模型训练

简介:这份PyTorch全连接神经网络垃圾邮件分类资源,面向需要完成毕业设计或课程综合实践的计算机相关专业学生,解决利用深度学习进行有监督文本分类的完整落地问题。项目基于Pycharm与Anaconda环境,使用Pytorch搭建MLP全连接神经网…

2026/9/27 23:35:18 阅读更多 →
安庆网站建设为新手避坑:完整流程揭秘与真实花费

安庆网站建设为新手避坑:完整流程揭秘与真实花费

安庆网站建设为新手避坑:完整流程揭秘与真实花费 改个按钮颜色,建站公司拖了一周还没动静?这种“甲方改需求,乙方装死”的戏码,在安庆的网站建设圈子里简直太常见了。很多刚入行的新人或者准备自己搞网站的老铁,往往因为不懂行里的 完整流程…

2026/9/27 23:34:17 阅读更多 →

日新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/27 9:12:14 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/25 20:29:31 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/26 22:52:30 阅读更多 →