Flatten Binary Tree to Linked List
这道题自己的方法可以过,但是逻辑很麻烦,需要考虑头尾的许多情况,discussion里面的这种思路更好,因为最后的结果是前序遍历的顺序,我们可以试着把前序遍历的过程整个反过来利用回溯把各个部分添加到根节点上
class Solution(object):
pre = None
def flatten(self, root):
"""
:type root: TreeNode
:rtype: void Do not return anything, modify root in-place instead.
"""
if not root:
return
self.flatten(root.right)
self.flatten(root.left)
root.right = self.pre
root.left = None
self.pre = root