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

LeetCode 热题 C++ 114. 二叉树展开为链表

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

进阶:你可以使用原地算法(O(1) 额外空间)展开这棵树吗?

思路:

按照题目给的例子来说

先把1-5这个链子断掉,存储一下5-6

然后把1-2断掉,以2为头结点的存储到1的右节点去,找到以2为头结点的最右结点,把5接在后面。

然后继续重复这样的操作。

文字说不清楚,可以看下参考图:

 代码:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:void flatten(TreeNode* root) {//if(!root)return;TreeNode* p=root;while(p){if(p->left){TreeNode* t=p->right;p->right=p->left;p->left=nullptr;TreeNode* q=p;while(q->right){if(q->right)q=q->right;}q->right=t;}p=p->right;}}
};

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

相关文章:

  • Spring的事务控制-基于AOP的声明式事务控制
  • SSO(单点登陆)
  • 线程和QObjects
  • 最新中文版FL Studio21水果软件下载安装图文教程
  • pandas数据分析35——多个数据框实现笛卡尔积
  • 【C语言学习笔记】:数组倒序排列,数组倒置
  • sni+tomcat漏洞复现
  • Linux ALSA 之十:ALSA ASOC Machine Driver
  • Spring 面试题(一):Spring 如何处理全局异常?
  • Threadlocal为何引发内存泄漏问题
  • 如何写好 Python 的 Lambda 函数?
  • 大数据技术架构(组件)32——Spark:Spark SQL--Execute Engine
  • Leetcode.1138 字母板上的路径
  • 一个自动配置 opengrok 多项目的脚本
  • JAVA同步代码块 同步方法
  • 分享111个助理类简历模板,总有一款适合您
  • Allegro如何更改临时高亮的颜色设置操作指导
  • 知识图谱嵌入技术研究综述
  • Scratch少儿编程案例-水果忍者-超完整
  • 练 习
  • Urho3D整体结构
  • 大数据技术之Hudi
  • libxlsxwriter条件格式
  • nodejs+vue+elementui在线求助系统vscode
  • 电子技术——BJT差分输入对
  • [MySQL教程②] - MySQL介绍和发展史
  • 多表查询--实例
  • Differentially Private Grids for Geospatial Data
  • Java学习记录day8
  • Solon2 开发之容器,三、注入或手动获取 Bean