📅  最后修改于: 2023-12-03 14:49:28.014000             🧑  作者: Mango
这是一个用于构造完整二叉树的示例程序,它接受一个给定的数组,并按照级别顺序构造一个完整的二叉树。完整二叉树是指除了最后一层外,其他每一层的节点都被完全填充,并且所有节点都尽可能地向左靠拢。
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def build_complete_binary_tree(nums):
n = len(nums)
h = get_tree_height(n)
tree = [None] * n
for i, num in enumerate(nums):
tree[i] = TreeNode(num)
for i in range(n):
if tree[i] is not None:
left_child_idx = 2 * i + 1
right_child_idx = 2 * i + 2
if left_child_idx < n:
tree[i].left = tree[left_child_idx]
if right_child_idx < n:
tree[i].right = tree[right_child_idx]
return tree[0] if n > 0 else None
def get_tree_height(n):
if n == 0:
return 0
height = 0
while 2 ** height <= n:
height += 1
return height - 1
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
root = build_complete_binary_tree(nums)
注意:示例程序中定义了一个 TreeNode
类用于表示二叉树的节点。你可以根据实际情况自定义节点类的实现。
以上是构造完整二叉树的示例代码,希望对你有帮助!