【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
相关推荐
飞川撸码30 分钟前
【LeetCode 热题100】739:每日温度(详细解析)(Go语言版)
算法·leetcode·golang
yuhao__z1 小时前
代码随想录算法训练营第六十六天| 图论11—卡码网97. 小明逛公园,127. 骑士的攻击
算法
Echo``1 小时前
3:OpenCV—视频播放
图像处理·人工智能·opencv·算法·机器学习·视觉检测·音视频
Nobkins1 小时前
2021ICPC四川省赛个人补题ABDHKLM
开发语言·数据结构·c++·算法·图论
88号技师1 小时前
2025年6月一区SCI-不实野燕麦优化算法Animated Oat Optimization-附Matlab免费代码
开发语言·算法·matlab·优化算法
ysy16480672392 小时前
03算法学习_977、有序数组的平方
学习·算法
codists3 小时前
《算法导论(第4版)》阅读笔记:p83-p85
算法
Tiny番茄3 小时前
归一化函数 & 激活函数
人工智能·算法·机器学习
jz_ddk3 小时前
[学习] RTKLib详解:rtcm2.c、rtcm3.c、rtcm3e与rtcmn.c
c语言·学习·算法
小学生的信奥之路4 小时前
力扣1991:找到数组的中间位置(前缀和)
数据结构·算法·leetcode·前缀和·数组