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

例如,给定二叉树

    1/ \2   5/ \   \
3   4   6

将其展开为:

1\2\3\4\5\6

前序遍历

将二叉树展开为单链表之后,单链表中的节点顺序即为二叉树的前序遍历访问各节点的顺序。因此,可以对二叉树进行前序遍历,获得各节点被访问到的顺序。由于将二叉树展开为链表之后会破坏二叉树的结构,因此在前序遍历结束之后更新每个节点的左右子节点的信息,将二叉树展开为单链表。

Code

 def flatten(self, root: TreeNode) -> None:"""Do not return anything, modify root in-place instead."""def preOrderTraversal(root: TreeNode):if root:preOrderList.append(root)preOrderTraversal(root.left)preOrderTraversal(root.right)preOrderList = []preOrderTraversal(root)size = len(preOrderList)for i in range(1, size):prev, curr = preOrderList[i - 1], preOrderList[i]prev.left = Noneprev.right = curr

复杂度分析

时间复杂度:O(n),其中 n 是二叉树的节点数。前序遍历的时间复杂度是 O(n),前序遍历之后,需要对每个节点更新左右子节点的信息,时间复杂度也是 O(n)。

空间复杂度:O(n),其中 n 是二叉树的节点数。空间复杂度取决于栈(递归调用栈或者迭代中显性使用的栈)和存储前序遍历结果的列表的大小,栈内的元素个数不会超过 n,前序遍历列表中的元素个数是 nn。

114. Flatten Binary Tree to Linked List 二叉树展开为链表相关推荐

  1. 114. Flatten Binary Tree to Linked List【Medium】【将给定的二叉树转化为“只有右孩子节点”的链表(树)】...

    Given a binary tree, flatten it to a linked list in-place. For example, given the following tree: 1/ ...

  2. leetcode [114]Flatten Binary Tree to Linked List

    Given a binary tree, flatten it to a linked list in-place. For example, given the following tree: 1/ ...

  3. LeetCode - Medium - 114. Flatten Binary Tree to Linked List

    Topic Tree Depth-first Search Description https://leetcode.com/problems/flatten-binary-tree-to-linke ...

  4. Leetcode:114. Flatten Binary Tree to Linked List

    题目 Given a binary tree, flatten it to a linked list in-place. For example, given the following tree: ...

  5. Java for LeetCode 114 Flatten Binary Tree to Linked List

    Given a binary tree, flatten it to a linked list in-place. For example, Given 1/ \2 5/ \ \3 4 6 The ...

  6. 【LeetCode从零单排】No 114 Flatten Binary Tree to Linked List

    题目 Given a binary tree, flatten it to a linked list in-place. For example, Given 1/ \2 5/ \ \3 4 6 T ...

  7. LeetCode: Flatten Binary Tree to Linked List

    LeetCode: Flatten Binary Tree to Linked List LeetCode: Flatten Binary Tree to Linked List Given a bi ...

  8. Flatten Binary Tree to Linked List - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Flatten Binary Tree to Linked List - LeetCode 注意点 不要访问空结点 val会有负值 解法 解法一:递归,D ...

  9. [Leetcode] Flatten Binary Tree to Linked List 整平二叉树

    Flatten Binary Tree to Linked List Given a binary tree, flatten it to a linked list in-place. For ex ...

最新文章

  1. TreeSet HashSet
  2. 磁盘剩余空间策略_如何无损扩展C盘空间大小,这一招足够!
  3. 剑指offer之判断二叉树是不是平衡二叉树
  4. custom的短语_custom是什么意思中文翻译
  5. 从键盘上录入10科考试分数,输出最高分最高分输入的序号
  6. C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。
  7. 如何在VLC中添加字幕?
  8. castle典范英语 storm_典范英语
  9. Java ftp 上传文件名乱码
  10. logback的简单使用 1
  11. Typora上传图片终于解决了
  12. 【转】如何用中控系统建造震撼的家庭影院
  13. 无法定位元素问题:使用phantomjs来进行模拟人的计算机行为的时候可能的报错(么牢牢啊)以及自己的问题解决
  14. vue element-ui table表格自定义纵向合计横向合计
  15. 在vue项目中使用阿里云播放器
  16. arthas-dashboard
  17. Pytest fixture实现测试用例前置后置操作
  18. PNETlab最新版介绍与下载
  19. 嵌入式软件工程师必须了解的八大加密算法
  20. 10亿台移动设备数据告诉你:移动互联网已是年轻人天下

热门文章

  1. CCF - 201503-3 - 节日
  2. 写给大家的编程书(2)
  3. 关于intel 32 hex文件格式以及hex2rom.sed
  4. ssh_askpass: exec(/usr/libexec/ssh-askpass): No such file or directory
  5. 买空long position、卖空short position
  6. 计算机系统win7安装教程,惠普EliteDesk 705 G3电脑安装win7系统方法
  7. Java黑皮书课后题第5章:*5.43(数学:组合)编写程序,显示从整数1到7中选择两个数字的所有组合,同时显示所有组合的总个数
  8. android dp工具类,Android 单位px、dp、sp转换工具类
  9. 面试智力题:天平称球
  10. linux下的ssh和rynsc