python创建平衡二叉树的方法
1、生成平衡树的核心是partial_tree方法。
它以一个序列和数字为参数,通过递归的方式返回一个序列。其中第一个是结构树,第二个是不包含在书中的元素。
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))
微信扫描下方的二维码阅读更多精彩内容
每日分享到群里,或者推荐给朋友会得大量积分,机会可以兑换微信零钱红包,具体请点击这里,得到了微信红包可以用来支持大飞哥
大飞哥能不能加鸡腿就看各位了!
开发者微信
开发者微信反馈BUG或者VIP可以添加,其他情况反馈可能不及时,见谅
版权声明
初衷是提供高清手机电脑壁纸等图片素材免费分享下载,禁止商用。图片素材来源网络,版权归原作者所有,若有侵权问题敬请告知我们!
【友情提醒】:
因平台原因不易展示大尺度写真,有的写真展示越少代表此套写真越性感,特别是xiuren等写真每一套写真完整套图50-100张不等。更多内容的欣赏请移步 点击这里
【更多图集移步】:
每日更新-点击这里
漂亮小姐姐-点击这里
性感美女-点击这里
清纯女孩-点击这里
xiuren专栏-点击这里
整站资源下载-点击这里