1. 题目
给你二叉树的根结点 root ,请你将它展开为一个单链表:
展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
展开后的单链表应该与二叉树 先序遍历 顺序相同。
2. 题解
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:
stack = [root]
temp = None
while stack:
cur = stack.pop()
if cur is not None:
stack.append(cur.right) # 注意,这个地方需要先把右边添加进去
stack.append(cur.left)
if temp:
temp.right = cur
cur.left = None
temp = cur