当前位置: 首页 > 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.xdnf.cn/news/1394407.html

相关文章:

  • 【Rust】 6. 字符串学习笔记
  • app怎么防止被攻击被打有多少种防护方式?
  • 税务岗位能力提升培训课程推荐
  • 达梦数据库-数据缓冲区 (二)
  • 【Flask】测试平台开发,产品管理实现编辑功能-第六篇
  • 接吻数问题:从球体堆叠到高维空间的数学奥秘
  • 机器学习 - Kaggle项目实践(5)Quora Question Pairs 文本相似
  • 栈和队列OJ习题
  • 佳易王钓场计时计费系统:全方位赋能钓场智能化管理,软件操作教程
  • vue在函数内部调用onMounted
  • 2025年热门职业资格证书分析
  • Rust 登堂 之 深入Rust 类型(六)
  • Linux内存管理 - LRU机制
  • 「LangChain 学习笔记」LangChain大模型应用开发:代理 (Agent)
  • VeOmni 全模态训练框架技术详解
  • 蓝蜂蓝牙模组:破解仪器仪表开发困境
  • 《P2863 [USACO06JAN] The Cow Prom S》
  • C++模板类的详细介绍和使用指南
  • 桌面GIS软件添加第三方图层
  • 【无标题】透明显示屏设计,提升展厅视觉体验边界
  • 【0424】为用户指定(CREATE TABLE)的 table 创建 relcache entry,并将其注册到 relcache ④
  • ros2--action/动作--接口
  • 【链表 - LeetCode】146. LRU 缓存
  • LeetCode Hot 100 Python (11~20)
  • Windows 11 跳过 OOBE 的方法和步骤
  • 打工人日报#20250829
  • 亚马逊季节性产品运营策略:从传统到智能化的演进
  • 【AOSP】Android Dump 开发与调试指南
  • 麒麟系统使用-VSCode运行.net过程中一些可能问题及解决办法
  • 每周资讯 | 《恋与深空》获科隆游戏展2025“最佳移动游戏奖”;8月173个版号下发