如何创建平衡二叉树,二叉平衡树算法实现
1.生成平衡树的核心是partial_tree方法。
它将一个序列和数字作为参数,并递归地返回一个序列。第一个是结构树,第二个是书里没有的元素。
2.实现的总体思路是将每个传入序列分成左半、顶点和右半,直到不能再分为止,然后逐层返回,最后组合成一棵平衡二叉树。
实例
list_to_tree方法将有序列表转换成平衡二叉树。
二叉树分为树顶点、左子树和右子树,其中左子树的值小于树顶点的值,右子树的值大于树顶点的值。
defmake_tree(入口,左,右):
#如何创建一棵树
返回(入口,左侧,右侧)
国防(树):
#获取树的顶点
returntree树[0]
defleft_branch(树):
#获取左边的子树
returntree[1]
defright_branch(tree):
#获得正确的子树
returntree[2]
deflist_to_tree(元素):
returnpartial_tree(elements,len(elements))[0]
defpartial_tree(elts,n):
ifn==0:
return((),elts)
else:
left_size=(n-1)2
left _ result=部分树(elts,left_size)
左_树=左_结果[0]
non_left_elts=left_result[1]
right_size=n-(left_size 1)
this_entry=non_left_elts[0]
right _ result=partial _ tree(non _ left _ elts[1:],右尺寸)
右树=右结果[0]
remaining _ elts=right _ result[1]
#print(条目,this_entry)
#print(左_树,左_树)
#print(右_树,右_树)
return(make_tree(this_entry,left_tree,right_tree),remaing _ elts)
if__name__==__main__:
tree=list_to_tree((1,3,5,7,9))
打印(生成的平衡二叉树是: ,树)
打印(树的顶点:,条目(树))
Print(树的左子树:,left_branch(tree))
Print(树的右子树:,right_branch(tree))以上是python如何创建平衡二叉树。希望对你有帮助。更多python学习方向:Python基础课程
本教程运行环境:windows7系统,Python 3.9.1,DELL G3电脑。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。