,可以使用以下方式实现:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def array_to_tree(nums):
if not nums:
return None
# 递归函数,将平面数组转换为树
def build_tree(left, right):
if left > right:
return None
mid = (left + right) // 2
node = TreeNode(nums[mid])
node.left = build_tree(left, mid - 1)
node.right = build_tree(mid + 1, right)
return node
return build_tree(0, len(nums) - 1)
这个函数接受一个平面数组 nums
,并返回一个树的根节点。函数内部使用递归的方式将平面数组转换为树。具体实现如下:
TreeNode
类,表示树的节点。每个节点包含一个值 val
,以及左右子节点 left
和 right
。array_to_tree
函数中,首先判断输入的数组是否为空,如果为空则直接返回 None
。build_tree
,该函数接受左右边界 left
和 right
,表示当前处理的数组范围。None
,表示当前范围为空。mid
,将 nums[mid]
的值作为当前节点的值创建一个新的节点 node
。build_tree
函数,将左边界到 mid-1
的范围作为左子树,将 mid+1
到右边界的范围作为右子树,分别赋值给 node.left
和 node.right
。node
。build_tree
函数,传入初始范围为整个数组的左右边界,返回树的根节点。这个函数的时间复杂度为 O(n),其中 n 是数组的长度。
领取专属 10元无门槛券
手把手带您无忧上云