LeetCode 114. Flatten Binary Tree to Linked List 拉平二叉树 Python Solution

来源:互联网 发布:知乎 查过敏源 编辑:程序博客网 时间:2024/06/05 17:19

此题目对应于LeetCode 114

题目要求拉平一个二叉树,很容易拉平后的二叉树在序列上顺序是输入二叉树的一个前序遍历,同时题目要求就地修改原二叉树,

这一点值得注意。

解题思路:

1.先获取二叉树的前序遍历。这个部分可以参考我的另一篇博文Binary Tree Traversal 二叉树遍历

2.根据前序遍历序列对二叉树进行就地修改。由于是就地修改所以只能对root的后续节点进行操作,不能修改root节点。

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def flatten(self, root):        res = []        mystack = []        cur = root        while cur or mystack:#获取二叉树的前序遍历            while cur:                mystack.append(cur)                res.append(cur.val)                cur = cur.left            cur = mystack.pop().right        if len(res)<=1:            pass        else:            root.left = None            for i in res[1:]:#就地修改二叉树                root.right = TreeNode(i)                root = root.right        """        :type root: TreeNode        :rtype: void Do not return anything, modify root in-place instead.        """



阅读全文
0 0