二叉树层级转化
一刷:
- res_level.next = ListNode(now_root.val) now_root.val写成了root.val
- res_level = res_level.next的后面变量名写错了
主要是思路还不够清晰。
"""
Definition of TreeNode:
class TreeNode:
def __init__(self, val):
this.val = val
this.left, this.right = None, None
Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
"""
from collections import deque
class Solution:
# @param {TreeNode} root the root of binary tree
# @return {ListNode[]} a lists of linked list
def binaryTreeToLists(self, root):
# Write your code here
if root is None:
return []
res = []
now_level = deque([root])
while now_level:
res_level = ListNode(0)
first_node = res_level
for _ in range(len(now_level)):
now_root = now_level.popleft()
res_level.next = ListNode(now_root.val)
res_level = res_level.next
if now_root.left is not None:
now_level.append(now_root.left)
if now_root.right is not None:
now_level.append(now_root.right)
res.append(first_node.next)
return res
时间复杂度O(n)
空间复杂度O(n)