【leetcode热题】二叉树展开为链表

题目描述

给定一个二叉树,原地将它展开为链表。

例如,给定二叉树

复制代码
    1
   / \
  2   5
 / \   \
3   4   6

将其展开为:

复制代码
1
 \
  2
   \
    3
     \
      4
       \
        5
         \
          6

解法:

先序遍历,始终记录下前一个节点,然后将当前节点接在前一个节点的右孩子上。

为了避免初始阶段 last 为空(即开始的时候前一个节点是不存在的),可以随意给 last 初始化一个节点,这并不影响结果。

python 复制代码
class Solution:
    def flatten(self, root: TreeNode) -> None:
        """
        Do not return anything, modify root in-place instead.
        """
        
        stack = [root]
        last = TreeNode(0)
        
        while stack:
            node = stack.pop()
            if not node:
                continue
        
            last.right = node
            last = node

            stack.append(node.right)
            stack.append(node.left)
            node.left = None
相关推荐
努力写代码的熊大17 分钟前
单链表和双向链表
数据结构·链表
军训猫猫头23 分钟前
1.如何对多个控件进行高效的绑定 C#例子 WPF例子
开发语言·算法·c#·.net
success37 分钟前
【爆刷力扣-数组】二分查找 及 衍生题型
算法
Orlando cron1 小时前
数据结构入门:链表
数据结构·算法·链表
牛客企业服务2 小时前
2025年AI面试推荐榜单,数字化招聘转型优选
人工智能·python·算法·面试·职场和发展·金融·求职招聘
糖葫芦君3 小时前
Policy Gradient【强化学习的数学原理】
算法
向阳@向远方4 小时前
第二章 简单程序设计
开发语言·c++·算法
github_czy5 小时前
RRF (Reciprocal Rank Fusion) 排序算法详解
算法·排序算法
许愿与你永世安宁6 小时前
力扣343 整数拆分
数据结构·算法·leetcode
爱coding的橙子6 小时前
每日算法刷题Day42 7.5:leetcode前缀和3道题,用时2h
算法·leetcode·职场和发展