题目描述
解题思路
- 想象如果左右子树已经拉平,那所需要做的就是把左子树连接到有右子树的位置,同时右子树连接到左子树的叶子结点;
- 因为需要先将左右子树拉平,因此本题需要后序遍历。
代码实现
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def flatten(self, root: TreeNode) -> None:
"""
Do not return anything, modify root in-place instead.
"""
if not root:
return
left = self.flatten(root.left)
right = self.flatten(root.right)
root.left = None
root.right = left
tmp = root
while tmp.right:
tmp = tmp.right
tmp.right = right
return root