创新互联Python教程:python创建平衡二叉树的方法

1、生成平衡树的核心是partial_tree方法。

创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站制作、江油网络推广、微信小程序定制开发、江油网络营销、江油企业策划、江油品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供江油建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

它以一个序列和数字为参数,通过递归的方式返回一个序列。其中第一个是结构树,第二个是不包含在书中的元素。

2、实现的整体思路是,每次传入的序列分为左半部分、顶点和右半部分,直到不能继续拆分,然后逐层返回,最后组合成一棵平衡的二叉树。

实例

"""
 list_to_tree方法将有序列表转化为平衡二叉树
 一棵二叉树分为树顶点、左子树、右子树,其中左子树的值都比树顶节点小,右子树的值都比树顶点大
"""
 
def make_tree(entry, left, right):
    # 创建树的方法
    return (entry, left, right)
 
def entry(tree):
    # 获取树的顶点
    return tree[0]
 
def left_branch(tree):
    # 获取左子树
    return tree[1]
 
def right_branch(tree):
    # 获取右子树
    return tree[2]
 
def list_to_tree(elements):
    return partial_tree(elements, len(elements))[0]
 
def partial_tree(elts, n):
    if n == 0:
        return ((), elts)
    else:
        left_size = (n - 1)  2
        left_result = partial_tree(elts, left_size)
        left_tree = left_result[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:], right_size)
        right_tree = right_result[0]
        remaing_elts = right_result[1]
        # print("entry", this_entry)
        # print("left_tree", left_tree)
        # print("right_tree", right_tree)
        return (make_tree(this_entry, left_tree, right_tree), remaing_elts)
 
if __name__ == "__main__":
    tree = list_to_tree((1, 3, 5, 7, 9))
    print("生成的平衡二叉树为:", tree)
    print("树的顶点:", entry(tree))
    print("树的左子树:", left_branch(tree))
    print("树的右子树:", right_branch(tree))

以上就是python创建平衡二叉树的方法,希望对大家有所帮助。更多Python学习指路:创新互联python教程

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

文章题目:创新互联Python教程:python创建平衡二叉树的方法
分享网址:http://www.csdahua.cn/qtweb/news18/247518.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网