114. 二叉树展开为链表(java)标记一下

news/2024/12/20 5:56:30/

题目描述:

给你二叉树的根结点 root ,请你将它展开为一个单链表

  • 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
  • 展开后的单链表应该与二叉树 先序遍历 顺序相同。

示例 1:

输入:root = [1,2,5,3,4,null,6]
输出:[1,null,2,null,3,null,4,null,5,null,6]

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [0]
输出:[0]

 代码思路:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public void flatten(TreeNode root) {flattenTree(root);}/*** 递归函数:扁平化树* * @param root 当前节点* @return 返回当前节点的右子树的头节点*/public TreeNode flattenTree(TreeNode root) {if (root == null) {return null;  // 如果当前节点为空,返回空}// 扁平化左子树TreeNode left = flattenTree(root.left);// 扁平化右子树TreeNode right = flattenTree(root.right);// 如果左子树不为空,将其连接到右子树if (left != null) {root.right = left;  // 当前节点的右子树指向左子树root.left = null;   // 当前节点的左子树置为空// 找到左子树的最后一个节点,将其右子树连接到右子树TreeNode tmp = left;while (tmp.right != null) {tmp = tmp.right;}tmp.right = right;  // 将右子树连接到左子树的最后一个节点}// 返回当前节点的右子树(即扁平化后的树)return root;}
}


http://www.ppmy.cn/news/1556581.html

相关文章

【系统】Mac crontab 无法退出编辑模式问题

【系统】Mac crontab 无法退出编辑模式问题 背景一、问题回答1.定位原因:2.确认编辑器类型3.确保编辑器进入正确3.1 确认是否有crontab调度任务3.2 进入编辑器并确保编辑器正常3.3 保存操作 4.确认crontab任务存在5.确保脚本的可执行性和正确性 二、后续 背景 之前…

Arrays工具类——常用方法

Arrays工具类 它是Java API文档已经给我们提供好的一个现成类,对于我们来说直接使用即可 在以后开发过程中,就2种情况: 1.自己写类,自己写方法,自己写实现……【累】 2.别人已经给你写好了,直接拿过来用就…

嵌入式单片机中对应GPIO外设详解实现

一、GPIO外设详解 大家可以看到,函数库开发的时候外设的使用流程都是一样的,接下来就讲解一下细节。 l定义一个外设的结构体变量 变量命名规则 PPP_InitTypeDef PPP_InitStructure; 每个外设都有对应的结构体,结构体的定义一般都是存放在每个外设的头文件内,比如GPIO外…

杨振宁大学物理视频中黄色的字,c#写程序去掉(原版改进,三)

上一节,我们分清了主次矛盾,并搞定了主要矛盾(去掉黄色的字),这一节解决次要矛盾(矩形色带)。 我们的想法如图: 1,我们找到稳定黄色的最左边,最右边两点&…

CentOS7超详细安装教程

资料提供 VMware虚拟机下载 通过百度网盘分享的文件:VMware-workstation-full-17.5.2 个人免费... 链接:百度网盘 请输入提取码 提取码:6666 CentOS7镜像 镜像下载网址centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 选择图下版本即…

AI前沿测评:Kimi上线视觉思考k1模型,多模态更上一层楼?

名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼 Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、Kimi k1 背后的技术创新二、Kimi k1:技术迭代与升级三、Kimi k1 的实际应用场景四、Kimi k1…

glTF格式:WebGL应用的3D资产优化解决方案

摘要 glTF作为一种高效的3D资产格式,为WebGL、OpenGL ES和OpenGL运行时的应用提供了强有力的支持。它不仅简化了3D模型的传输与加载流程,还通过优化资产大小,使得打包、解包更加便捷。本文将深入探讨glTF格式的优势,并提供实用的代…

LLM大语言模型私有化部署-OpenEuler22.03SP3上容器化部署Dify与Qwen2.5

背景 Dify 是一款开源的大语言模型(LLM) 应用开发平台。其直观的界面结合了 AI 工作流、 RAG 管道、 Agent 、模型管理、可观测性功能等,让您可以快速从原型到生产。相比 LangChain 这类有着锤子、钉子的工具箱开发库, Dify 提供了更接近生产需要的完整…