修改 list_to_tree(arr) 避免列表越界的错误

This commit is contained in:
WangSL 2022-12-26 21:15:34 +08:00 committed by GitHub
parent 8733557f00
commit fc33af7d4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -18,24 +18,30 @@ def list_to_tree(arr):
"""Generate a binary tree with a list """Generate a binary tree with a list
Args: Args:
arr ([type]): [description] arr (list): a list representing a binary tree, where None represents an empty node
Returns: Returns:
[type]: [description] TreeNode: the root node of the generated binary tree
""" """
if not arr: if not arr:
return None return None
if len(arr) < 2:
return TreeNode(arr[0])
i = 1 i = 1
root = TreeNode(int(arr[0])) root = TreeNode(int(arr[0]))
queue = collections.deque() queue = collections.deque()
queue.append(root) queue.append(root)
while queue: while queue:
node = queue.popleft() node = queue.popleft()
if arr[i] != None: if i >= len(arr):
break
if arr[i] is not None:
node.left = TreeNode(int(arr[i])) node.left = TreeNode(int(arr[i]))
queue.append(node.left) queue.append(node.left)
i += 1 i += 1
if arr[i] != None: if i >= len(arr):
break
if arr[i] is not None:
node.right = TreeNode(int(arr[i])) node.right = TreeNode(int(arr[i]))
queue.append(node.right) queue.append(node.right)
i += 1 i += 1