当前为游客只读模式。登录后可提交代码判题并保存草稿与进度。

练题计划 · 力扣 HOT 100

二叉树展开为链表

中等flatten()
时间限制 2000 ms内存限制 128 MB复杂度要求 时间 O(n),空间 O(1)

二叉树展开为链表

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

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

约定

  • 你必须在原树上直接修改(in-place),不能新建节点。
  • 展开完成后,整棵树是一条只含 right 指针的右斜链。

输入

  • root:二叉树根节点,节点数 [0, 2000],节点值 [-100, 100]。

输出

无返回值(void)。判题器会读取展开后的整棵树,按层序序列化为数组进行比对:每个节点的 left 必须为 null,right 依次指向下一个先序节点。

示例一

输入:

root = [1, 2, 5, 3, 4, null, 6]

展开后:

[1, null, 2, null, 3, null, 4, null, 5, null, 6]

示例二

输入:

root = []

展开后:

[]

示例三

输入:

root = [0]

展开后:

[0]

复杂度要求

  • 时间复杂度 O(n)。
  • 进阶空间复杂度 O(1)。
Loading...

输入

[[1,2,5,3,4,null,6]]

预期输出

[1,null,2,null,3,null,4,null,5,null,6]
自定义用例