原题
https://leetcode.com/problems/flatten-binary-tree-to-linked-list/
解法
由于题意要求直接在节点上改, 因此我们无法采用构建一个新节点然后复制给root这个方法. 比较简单的做法是先序遍历, 将节点都放入列表, 然后对列表中的节点进行更改.
代码
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def flatten(self, root):
"""
:type root: TreeNode
:rtype: None Do not return anything, modify root in-place instead.
"""
def preOrder(root):
if not root:
return
l.append(root)
preOrder(root.left)
preOrder(root.right)
l = []
preOrder(root)
for i in range(len(l)-1):
l[i].left = None
l[i].right = l[i+1]