Given a binary tree, flatten it to a linked list in-place.
For example, given the following tree:
1 / 2 5 / 3 4 6
The flattened tree should look like:
1 2 3 4 5 6
# 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 __init__(self): self.prev = None def flatten(self, root): """ :type root: TreeNode :rtype: None Do not return anything, modify root in-place instead. """ #从右边后序遍历节点,存储前一个节点的值 if root is None: return None self.flatten(root.right) self.flatten(root.left) root.right = self.prev root.left = None self.prev = root