思路很简单:先把root的左子树转化为链表移到右子树,再将右子树转化为链表移到左子树后面,整个过程是递归进行的。
代码:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def flatten(self, root: TreeNode) -> None:
"""
Do not return anything, modify root in-place instead.
"""
def dfs(node):
if node is None: return None
if node.left is None and node.right is None: return node
left_tree = dfs(node.left)
right_tree = dfs(node.right)
node.right = left_tree
node.left = None
temp = node
while(temp.right): temp = temp.right
temp.right = right_tree
return node
dfs(root)