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

【leetcode】114. 二叉树展开为链表

文章目录

    • 题目
    • 题解
      • 1. 递归
      • 2. 迭代
      • 3. 右指针重排,始终将右子树添加到左子树的最右

题目

114. 二叉树展开为链表

在这里插入图片描述

题解

1. 递归

  1. 先序遍历
  2. 然后将数组操作
for i in range(1, len(res)):prev, curr = res[i - 1], res[i]prev.left = Noneprev.right = curr
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):def flatten(self, root):""":type root: Optional[TreeNode]:rtype: None Do not return anything, modify root in-place instead."""res = []def dfs(node):if node is None:returnres.append(node)dfs(node.left)dfs(node.right)dfs(root)for i in range(1, len(res)):prev, curr = res[i - 1], res[i]prev.left = Noneprev.right = curr

2. 迭代

  1. 先序遍历
  2. 与1方法一样
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):def flatten(self, root):""":type root: Optional[TreeNode]:rtype: None Do not return anything, modify root in-place instead."""if not root:return rootres = []stack = []stack.append(root)while stack:node = stack.pop()res.append(node)if node.right:stack.append(node.right)if node.left:stack.append(node.left)for i in range(1, len(res)):prev, curr = res[i - 1], res[i]prev.left = Noneprev.right = curr

3. 右指针重排,始终将右子树添加到左子树的最右

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):def flatten(self, root):""":type root: Optional[TreeNode]:rtype: None Do not return anything, modify root in-place instead."""cur = rootwhile cur:if cur.left:pre = cur.leftwhile pre.right:pre = pre.rightpre.right = cur.rightcur.right =cur.leftcur.left = Nonecur = cur.right
http://www.dtcms.com/a/357553.html

相关文章:

  • 死锁检测 及其测试用例
  • Linux的环境变量
  • 10迁移TiDB数据库数据到GaussDB
  • Java实现PDF表格转换为CSV
  • 消失的数字
  • RAG 系统核心:深入理解向量相似度匹配与文本向量化
  • Python中将py程序打包成exe可执行文件并封装环境以及本地依赖+单个exe和文件目录两种状态(亲测可用建议收藏)
  • docker 下载镜像报错
  • [HFCTF2020]EasyLogin
  • 日本IT|C++相关面试及问答技巧分享
  • STM32项目分享:基于单片机的自行车测速系统设计
  • Win11 压缩实测:Win11 的压缩软件的最佳配置和使用方式
  • 网站酷炫换皮肤?——PC 端 H5 换肤方案实战分享
  • WebGIS开发智慧校园(8)地图控件
  • A股大盘数据-20250829 分析
  • 03.《交换的底层逻辑:从基础到应用》
  • vue3中安装tailwindcss
  • ​​字节跳动重磅开源 Seed-OSS 大模型系列,12T tokens训练,原生支持512K长上下文​
  • python 2025/7/28
  • 【完整源码+数据集+部署教程】工地建筑进度监测系统源码和数据集:改进yolo11-SDI
  • 【笔记】扩散模型(一二)U-ViT|Diffusion with Transformer
  • 智慧园区系统:基于Java微服务架构与全栈信创国产化的数字化赋能平台
  • 人工智能一些基础概念与应用场景学习笔记
  • C++基础(③反转字符串(字符串 + 双指针))
  • solidity地址、智能合约、交易概念
  • Pointer--Learing MOOC-C语言第九周指针
  • 鸿蒙地址选择库(ArkTs UI)
  • Idea2025.2 MybatisX插件失效问题
  • Suno-API - OpenI
  • 【计算机网络】前端基础知识Cookie、localStorage、sessionStorage 以及 Token