[114][中等][DFS] 二叉树展开为链表

题目描述

114. 二叉树展开为链表

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

例如,给定二叉树

    1
   / \
  2   5
 / \   \
3   4   6

将其展开为:

1
 \
  2
   \
    3
     \
      4
       \
        5
         \
          6

解题思路

寻找前驱节点

空间复杂度O(1)O(1).

如果一个节点的左子节点不为空, 则该节点的左子树中的最后一个节点被访问之后, 该节点的右子节点被访问.

  • 左子树中最后一个被访问的节点是左子树中的最右边的节点, 是右子树根节点的前驱结点

  • 当前树的根节点是左子树根节点的前驱结点

递归地将树展开, 然后将左右子树根节点与它们的前驱结点相连.

最后更新于

这有帮助吗?