LeetCode热题100-二叉树展开为链表

给你二叉树的根结点 root ,请你将它展开为一个单链表:

  • 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null
  • 展开后的单链表应该与二叉树 先序遍历 顺序相同。

示例 1:

复制代码
输入:root = [1,2,5,3,4,null,6]
输出:[1,null,2,null,3,null,4,null,5,null,6]
核心思路
  1. 找到当前节点左子树最右下节点
  2. 把该节点右指针指向当前节点的右子树
  3. 当前节点左子树挪到右侧,左指针置空
  4. 向右遍历,重复操作
python 复制代码
class Solution:
    def flatten(self, root: Optional[TreeNode]) -> None:
        """
        Do not return anything, modify root in-place instead.
        """
        if not root:
            return
        self.flatten(root.left)
        self.flatten(root.right)
        tmp = root.right
        root.right = root.left
        root.left = None

        p = root
        while p.right:
            p = p.right
        p.right = tmp
相关推荐
梦梦代码精4 小时前
为什么这个开源的AI平台会火?有点东西。。。
人工智能·算法·机器学习·docker·开源
随意起个昵称4 小时前
线性dp-综合刷题1(Not Alone)
算法·动态规划
如何原谅奋力过但无声5 小时前
【灵神高频面试题合集09-13】二叉树、二叉搜索树
数据结构·算法·leetcode
皆圥忈5 小时前
磁盘物理结构与文件系统基础讲解
linux·算法
数据仓库搬砖人5 小时前
用 LangGraph 从零搭一个客服 Agent:多轮对话 + 工具调用全流程
算法
GuWenyue5 小时前
告别JS类型坑!Ts为什么在ai时代逐渐成为"第一"语言
前端·算法·typescript
子琦啊5 小时前
哈希与前缀和
算法·哈希算法
Deep-w6 小时前
【MATLAB】基于离散 LQR 的车辆横向轨迹跟踪控制方法研究
开发语言·算法·matlab
Peter·Pan爱编程6 小时前
23. 算法库:用算法代替手写循环
c++·人工智能·算法
小欣加油6 小时前
leetcode2161 根据给定数字划分数组
数据结构·c++·算法·leetcode·职场和发展