leetcode刷题笔记-114. 二叉树展开为链表(java实现)

题目描述

给你二叉树的根结点 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]

提示:

树中结点数在范围 [0, 2000] 内

-100 = Node.val = 100

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list

解题思路

1)把左子树和右子树拉平

2)左子树放到右子树位置,然后把右子树放到左子树下方

参考来源:https://labuladong.gitbook.io/algo/shu-ju-jie-gou-xi-lie/shou-ba-shou-shua-er-cha-shu-xun-lian-di-gui-si-wei/er-cha-shu-xi-lie-1

解题代码

/**

* 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) {

if(root == null) {

return;

}

flatten(root.left);

flatten(root.right);

//左右子树拉成平链

TreeNode left = root.left;

TreeNode right = root.right;

root.left = null;

root.right = left;

//把右子树挂在调整的链后边

TreeNode p = root;

while(p.right != null) {

p = p.right;

}

p.right = right;

}

}

点击并拖拽以移动

leetcode刷题笔记-114. 二叉树展开为链表(java实现) 相关文章

leetcode刷题笔记-116. 填充每个节点的下一个右侧节点指针(java实现)

题目描述 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节

leetcode刷题笔记-226. 翻转二叉树(java实现)

题目描述 翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/invert-binary-tree 解题思路 经过观察,把二叉树的左右子节点进行交换,所有子节点

吴裕雄--天生自然 Zookeeper学习笔记--Zookeeper 节点特性

介绍一下 zookeeper 的节点特性和简单使用场景,正是由于这些节点特性的存在使 zookeeper 开发出不同的场景应用。 1、同一级节点 key 名称是唯一的实例:$ ls /$ create /runoob 2 2、创建节点时,必须要带上全路径实例:$ ls /runoob$ create /runoob/child

吴裕雄--天生自然 Zookeeper学习笔记--Zookeeper 四字命令

zookeeper 支持某些特定的四字命令与其交互,用户获取 zookeeper 服务的当前状态及相关信息,用户在客户端可以通过 telenet 或者 nc(netcat) 向 zookeeper 提交相应的命令。安装 nc 命令:$ yum install nc # centos或$ sudo apt install netcat # ubuntu

吴裕雄--天生自然 Zookeeper学习笔记--Zookeeper Java 客户端搭建

使用的 IDE 为 IntelliJ IDEA,创建一个 maven 工程,命名为 zookeeper-demo,并且引入如下依赖,可以自行在maven中央仓库选择合适的版本,介绍原生 API 和 Curator 两种方式。 dependency groupIdjunit/groupId artifactIdjunit/artifactId version4.11/ver

吴裕雄--天生自然 Zookeeper学习笔记--ZooKeeper 数据模型 znode 结构详解

数据模型在 zookeeper 中,可以说 zookeeper 中的所有存储的数据是由 znode 组成的,节点也称为 znode,并以 key/value 形式存储数据。整体结构类似于 linux 文件系统的模式以树形结构存储。其中根路径以 / 开头。进入 zookeeper 安装的 bin 目录,通过sh zk

吴裕雄--天生自然 Zookeeper学习笔记--Zookeeper 安装配置

Linux 安装zookeeper 下载地址为: https://zookeeper.apache.org/releases.html。 打开网址 https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz,看到如下界面: 选择一个下载地址,使用 wget 命令下载并安装:$ wg

redis6.0.5之zset阅读笔记4--压缩列表(ziplist)排序集相关API

***********************************************************************************************获取压缩链表中节点的数值double zzlGetScore(unsigned char *sptr) { unsigned char *vstr; unsigned int vlen; long long vlong; char buf[128]; double

吴裕雄--天生自然 Zookeeper学习笔记--Zookeeper linux 服务端集群搭建步骤

所需准备工作,创建三台虚拟机环境并安装好 java 开发工具包 JDK,可以使用 VM 或者 vagrant+virtualbox 搭建 centos/ubuntu 环境,本案例基于宿主机 windows10 系统同时使用 vagrant+virtualbox 搭建的 centos7 环境,如果直接使用云服务器或者物理机同理。

算法刷题及总结_数组篇

二分法 //算法总结//第一部分:数组相关/***Leetcode题目35:搜索插入位置*给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。*示例 1:*输入: [1,3,5,6], 5*输出: 2**示例 2:*输入

java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)相关推荐

  1. laravel数组转换为字符串_LeetCode刷题实战108:将有序数组转换为二叉搜索树

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  2. list元素求和_LeetCode刷题实战82:删除排序链表中的重复元素 II

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  3. java二叉树 最大值_leetcode刷题笔记-654. 最大二叉树(java实现)

    题目描述 给定一个不含重复元素的整数数组 nums .一个以此数组直接递归构建的 最大二叉树 定义如下: 二叉树的根是数组 nums 中的最大元素. 左子树是通过数组中 最大值左边部分 递归构造出的最 ...

  4. char java 回文_LeetCode刷题笔记(Java)---第1-18题

    题目来自LeetCode 文章目录 全部章节 1-18题 19-40题 41-60题 61-80题 81-100题 101-120题 121-140题 1.两数之和 2.两数相加 3.无重复字符串的最 ...

  5. LeetCode Java刷题笔记—297. 二叉树的序列化与反序列化

    297. 二叉树的序列化与反序列化 请实现两个函数,分别用来序列化和反序列化二叉树.这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化 ...

  6. 【小f的刷题笔记】(JS)链表 - 单链表的分解 LeetCode86

    [链表] 单链表的分解 LeetCode86 链接: 86.分隔链表 题目: 思路: 1️⃣ 先分开为两个新链表,然后再连成一个 2️⃣ 定义两个哑结点并分别对应两个游标,然后去遍历原始链表 如果小于 ...

  7. 【小f的刷题笔记】(JS)链表 - 单链表的倒数第 k 个节点 LeetCode19 单链表的中点 LeetCode876

    [链表] 一.单链表的倒数第 k 个节点: ✔ 要求:只遍历一遍,链表有多长未知 LeetCode19 链接: 19.删除链表的倒数第N个结点 题目: 思路: 因为没有给头结点,我们就先定义一个哑结点 ...

  8. 【小f的刷题笔记】(JS)链表 - 合并 k 个有序链表 LeetCode23 - 顺序合并暴力三种方法

    [链表] 合并 k 个有序链表:

  9. gorm preload 搜索_LeetCode刷题笔记|95:不同的二叉搜索树 II

    题目描述 给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 . 示例 输入:3 输出: [ [1,null,3,2], [3,2,null,1], [3,1,null,null ...

最新文章

  1. 数据库中char varchar nchar nvarchar的区别
  2. java 获取打印机缺纸_第三章软件
  3. Codeforces Round #682 (Div. 2)D Powerful Ksenia ///思维
  4. 如何评估模型的预测性能?
  5. 平舌音 Z C S 的正确发音方式
  6. 编译器入门 语法分析器 java_从零开始写个编译器吧 - Parser 语法分析器
  7. Linux sh/bash[精华]
  8. 我和EDAS这两年——阿里巴巴入职两年的小结
  9. 2017《JAVA》预备作业 计科1501班 王奕开
  10. 【Spring框架学习】:初识Spring框架
  11. 中企海外周报 | 华为在德国发布mate30系列手机;一汽新车亮相法兰克福车展
  12. Matlab中hold on与hold off的用法
  13. CNCF的中国云原生调查报告
  14. flowable Activiti7 会签
  15. c语言lst文件,Keil C51 之LST文件
  16. Cors跨域(一):深入理解跨域请求概念及其根因
  17. webpack性能优化全方案
  18. 如何在IDEA设置Java类和方法的注释模板?
  19. 计算机应用基础第四版答案周南岳,计算机应用基础第周南岳win+office期末复习及答案.docx...
  20. 5G全场景时代 战略关键转型期 华为不只要重构想象

热门文章

  1. 前端学习(1879)vue之电商管理系统电商系统之通过axios拦截器添加token认证
  2. 前端学习(1138):正则表达式里面的量词符
  3. spring学习(52):工厂方法创建bean对象
  4. php 特有,PHP单一入口的特有作用
  5. php评星,jQuery+PHP星级评分实现方法
  6. gateway请求拦截_一种网关对用户请求进行统一拦截判断是否放行的方法与流程...
  7. 小程序根据手机机型设置自定义底部导航距离
  8. std::packaged_task() ---C++17 并发编程
  9. 数据结构算法入门--链表
  10. 安装python要注意什么_安装python注意事项