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:*输入