python--lintcode453. 将二叉树拆成链表

标签: python leetcode 算法 lintcode
9人阅读 评论(0) 收藏 举报
分类:

将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。

 注意事项

不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出。

样例
              1
               \
     1          2
    / \          \
   2   5    =>    3
  / \   \          \
 3   4   6          4
                     \
                      5
                       \
                        6

这一题简单粗暴的方法就是用一个list保存所有结点:

class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left, self.right = None, None


class Solution:
    """
       @param root: a TreeNode, the root of the binary tree
       @return: nothing
       """

    def flatten(self, root):
        list=[]
        def traverse(root):
            if(root is None):return
            list.append(root)
            traverse(root.left)
            traverse(root.right)
        traverse(root)
        if(len(list)>1):
            for i in list:
                root.left=None
                root.right=i
                root=root.right



a=Tree = TreeNode(1)
# b=Tree.left = TreeNode(2)
# c=Tree.right = TreeNode(3)
# d=b.left=TreeNode(4)
s = Solution()
s.flatten(a)
print(a.right.val)
# print(s.flatten(a))
当然直接可以用一个遍历来做:




查看评论

4.9.链表&状态机与多线程

-
  • 1970年01月01日 08:00

lintCode(453)——将二叉树拆分成链表

题目描述:将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。 注意事项:不要忘记将左儿子标记为 null,否则你可能会得到空间...
  • nawuyao
  • nawuyao
  • 2016-04-08 11:18:43
  • 2002

LintCode: 将二叉树拆成链表

LintCode: 将二叉树拆成链表Python""" Definition of TreeNode: class TreeNode: def __init__(self, val): ...
  • u012225151
  • u012225151
  • 2016-05-10 19:17:09
  • 809

lintcode 将二叉树拆成链表

1:问题描述:将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。 样例 1 ...
  • wangyukl
  • wangyukl
  • 2017-04-12 20:46:16
  • 227

容易 将二叉树拆成链表(lintcode)

将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。  注意事项 不要忘记将左儿子标记为 null,...
  • witnessai1
  • witnessai1
  • 2016-08-21 22:04:36
  • 956

将二叉树拆分成链表-lintcode

我的一开始思路是先将root按照先序遍历输出到一个queue中,然后依次处理其节点,记得要把left节点置为NULL。程序比较简单,易懂。 C++代码: /** * Definition of ...
  • u014257954
  • u014257954
  • 2016-12-04 21:25:55
  • 179

[LintCode 453] 将二叉树拆成链表(Python)

题目描述 将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。 注意事项 不要忘记将左儿子标记为 null,...
  • yurenguowang
  • yurenguowang
  • 2017-08-25 18:04:58
  • 191

将二叉树拆成链表

将二叉树拆成链表  描述 笔记 数据 评测 将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。 您在真实的面...
  • ouyangjinbin
  • ouyangjinbin
  • 2016-04-25 12:35:04
  • 1235

lintcode将二叉树拆成链表

1.描述: 将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。  注意事项 不要忘记将左儿子标记...
  • xspyzm
  • xspyzm
  • 2017-04-18 22:20:25
  • 478

453- 将二叉树拆成链表

3.30 即使昨天联系了半天的二叉树的基本操作,今天做起题目来依旧不顺手。 想着边遍历边修改左右子树,但是好像不太现实。 只好把先序遍历的结果存在queue中 然后再遍历queue,再修改子树。 /*...
  • Missbubu
  • Missbubu
  • 2017-03-30 11:14:03
  • 107
    个人资料
    持之以恒
    等级:
    访问量: 5万+
    积分: 1497
    排名: 3万+
    最新评论