描述
该题来自于力扣第114题
分析
用递归简单很多,假设已经有一个函数可以将以root为根结点的树转为链表,记该函数为func(root),显然现处理左子树func(root.left)和右子树func(root.right),这时左右子树已经变为链表了,然后就简单多了,模拟下过程,分为三步:
- 将左子树的最右结点指向右子树的根结点
root.right = root.leftroot.left = null
代码
class Solution:
def flatten(self, root: Optional[TreeNode]) -> None:
"""
Do not return anything, modify root in-place instead.
"""
if root:
self.flatten(root.left)
self.flatten(root.right)
if root.left:
left_last = root.left
while left_last.right:
left_last = left_last.right
left_last.right = root.right
root.right = root.left
root.left = None
继续这个系列