0%

Leetcode 114 二叉树展开为链表

给你二叉树的根结点 root ,请你将它展开为一个单链表:

  • 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。

  • 展开后的单链表应该与二叉树 先序遍历 顺序相同。

题目要求和先序遍历的顺序相同,直接使用一个列表存储先序遍历的结果,然后将每个节点的左子树置空,右子树指向下一个节点即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 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: Optional[TreeNode]) -> None:
"""
Do not return anything, modify root in-place instead.
"""
if not root: return
tmp = []
def preorder_traversal(root):
if not root:
return
tmp.append(root)
preorder_traversal(root.left)
preorder_traversal(root.right)
preorder_traversal(root)
for i in range(1, len(tmp)):
node = tmp[i]
root.left = None
root.right = node
root = root.right