【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
相关推荐
是乐谷1 小时前
燧原科技招大模型训练算法工程师
科技·算法
YuTaoShao1 小时前
【LeetCode 热题 100】139. 单词拆分——(解法一)记忆化搜索
java·算法·leetcode·职场和发展
圣保罗的大教堂2 小时前
leetcode 1277. 统计全为 1 的正方形子矩阵 中等
leetcode
小马学嵌入式~2 小时前
数据结构:队列 二叉树
c语言·开发语言·数据结构·算法
焊锡与代码齐飞4 小时前
嵌入式第三十五课!!Linux下的网络编程
linux·运维·服务器·开发语言·网络·学习·算法
省四收割者4 小时前
Go语言入门(10)-数组
数据结构·经验分享·笔记·vscode·算法·golang
lxmyzzs4 小时前
【图像算法 - 21】慧眼识虫:基于深度学习与OpenCV的农田害虫智能识别系统
人工智能·深度学习·opencv·算法·yolo·目标检测·计算机视觉
KeithTsui4 小时前
GCC C语言整数转换的理解(Understanding of Integer Conversions in C with GCC)
c语言·开发语言·算法
欧阳小猜6 小时前
深度学习②【优化算法(重点!)、数据获取与模型训练全解析】
人工智能·深度学习·算法
小欣加油7 小时前
leetcode 904 水果成篮
c++·算法·leetcode