LeetCode 114. 二叉树展开为链表

简介: LeetCode 114. 二叉树展开为链表

 114. 二叉树展开为链表

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

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

    示例 1:

    image.gif 编辑

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

    输出:[1,null,2,null,3,null,4,null,5,null,6]


    示例 2:

    输入:root = []

    输出:[]


    示例 3:

    输入:root = [0]

    输出:[0]


    提示:


    树中结点数在范围 [0, 2000]

    -100 <= Node.val <= 100

    进阶:你可以使用原地算法(O(1) 额外空间)展开这棵树吗?


    思路:dfs + 前序遍历

    时间复杂度:O(N)

    空间复杂度:O(N)

    /*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/funcflatten(root*TreeNode)  {
    preOrderList :=dfs(root)
    fori :=1; i<len(preOrderList); i++ {
    preOrderList[i-1].Left=nilpreOrderList[i-1].Right=preOrderList[i]
        }
    }
    funcdfs(node*TreeNode) []*TreeNode {
    varres []*TreeNode// 注意:定义局部数组变量ifnode==nil {
    returnres    }
    res=append(res, node)
    res=append(res, dfs(node.Left)...)    // 语法糖res=append(res, dfs(node.Right)...)
    returnres}

    image.gif


    目录
    相关文章
    |
    24天前
    【力扣】-- 移除链表元素
    【力扣】-- 移除链表元素
    33 1
    |
    1月前
    Leetcode第21题(合并两个有序链表)
    这篇文章介绍了如何使用非递归和递归方法解决LeetCode第21题,即合并两个有序链表的问题。
    47 0
    Leetcode第21题(合并两个有序链表)
    |
    30天前
    【LeetCode 31】104.二叉树的最大深度
    【LeetCode 31】104.二叉树的最大深度
    19 2
    |
    30天前
    【LeetCode 29】226.反转二叉树
    【LeetCode 29】226.反转二叉树
    15 2
    |
    30天前
    【LeetCode 28】102.二叉树的层序遍历
    【LeetCode 28】102.二叉树的层序遍历
    14 2
    |
    1月前
    LeetCode第二十四题(两两交换链表中的节点)
    这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
    16 0
    LeetCode第二十四题(两两交换链表中的节点)
    |
    30天前
    【LeetCode 43】236.二叉树的最近公共祖先
    【LeetCode 43】236.二叉树的最近公共祖先
    17 0
    |
    30天前
    【LeetCode 38】617.合并二叉树
    【LeetCode 38】617.合并二叉树
    13 0
    |
    30天前
    【LeetCode 37】106.从中序与后序遍历构造二叉树
    【LeetCode 37】106.从中序与后序遍历构造二叉树
    12 0
    |
    30天前
    【LeetCode 34】257.二叉树的所有路径
    【LeetCode 34】257.二叉树的所有路径
    11 0