114. 二叉树展开为链表
给你二叉树的根结点 root ,请你将它展开为一个单链表:
展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
展开后的单链表应该与二叉树 先序遍历 顺序相同。
示例 1:
输入:root = [1,2,5,3,4,null,6]
输出:[1,null,2,null,3,null,4,null,5,null,6]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [0]
输出:[0]
解题思路
- 前序遍历root将数值放入列表中
- 列表生成链表(树中左节点为None)
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def flatten(root):
def preorder(node):
if not node:
return
res.append(node.val)
preorder(node.left)
preorder(node.right)
res = []
preorder(root)
if len(res) == 0:
return []
else:
current_node = root
for i in range(1, len(res)):
current_node.left = None
current_node.right = TreeNode(res[i])
current_node = current_node.right
return root