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

【java】leetcode 二叉树展开为链表

二叉树展开为链表

  • leetcode114 .二叉树展开为链表
  • 解题思路
  • 二叉树专题:

leetcode114 .二叉树展开为链表

114 leetcode 链接。可以打开测试

给你二叉树的根结点 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) {ArrayList<TreeNode> list= new ArrayList();process(root,list);for(int i = 0; i < list.size() - 1;i++){//只有右子树,来构造单链表list.get(i).right = list.get(i+1);//左子树置为空list.get(i).left = null;}}/*** 先序遍历 把节点加入到集合中*/public  void process(TreeNode root, ArrayList<TreeNode> list){if(root == null){return ;}list.add(root);process(root.left,list);process(root.right,list);}
}

二叉树专题:

填充每个节点的下一个右侧节点指针(java)

LeetCode: 二叉树的直径(java)

从前序与中序遍历序列构造二叉树(java)

leetcode二叉树中的最大路径和(java)

计算二叉树中最大的二叉搜索子树的大小(节点数量)

给定一棵二叉树的头节点,返回这颗二叉树中最大的二叉搜索子树的头节点

二叉树专题-求两个节点的最低公共祖先

http://www.lryc.cn/news/91311.html

相关文章:

  • windows环境, nginx https配置
  • git 命令
  • 【高分论文密码】大尺度空间模拟预测与数字制图
  • Word控件Aspose.Words教程:使用 C# 读取 SXC 和 FODS 文件
  • 代码示范【FabEdge v0.8.0】配置 connector 公开端口
  • 通过Python的PyPDF2库合并多个pdf文件
  • python基础 - python命名空间与作用域
  • MapReduce实战案例(3)
  • Socket(三)
  • 【JVM】12. 垃圾回收相关概念
  • Java 版 spring cloud 工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单
  • 【Linux系统基础快速入门详解】Linux系统命令行介绍、命令提示符知识详解: ~/#/@等符号
  • Python 面向对象编程笔记:中级面向对象
  • JVM学习笔记(上)
  • 反爬虫技术
  • JAVA中.equals()与 ==的区别
  • 华为OD机试之羊、狼、农夫过河(Java源码)
  • C++ string的简单应用
  • Java中的阻塞队列
  • PriorityBlockingQueue无界阻塞优先级队列
  • 「HTML和CSS入门指南」p 标签详解
  • 【单目标优化算法】孔雀优化算法(Matlab代码实现)
  • chatgpt赋能python:Python同一行多个语句:如何提高你的编程效率?
  • Java反射概述
  • 《网络是怎样连接的》(一)
  • Flink on yarn任务日志怎么看
  • 二次元的登录界面
  • 2. 量化多因子数据清洗——去极值、标准化、正交化、中性化
  • 皮卡丘反射型XSS
  • 巧计口诀-软件测试的生命周期,黑盒测试设计方法