网站的服务费账怎么做手表网站欧米茄
news/
2025/9/30 22:42:09/
文章来源:
网站的服务费账怎么做,手表网站欧米茄,潜江网站建设,长安外贸网站建设https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注#xff01; 欢迎关注微信公众号#xff1a;宝藏女孩的成长日记 如有转载#xff0c;请注明出处#xff08;如不注明#xff0c;盗者必究#xff09; 目录一、概念二、带权路径长度三、树的带权路径长度四、举… https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注 欢迎关注微信公众号宝藏女孩的成长日记 如有转载请注明出处如不注明盗者必究 目录一、概念二、带权路径长度三、树的带权路径长度四、举例五、哈夫曼树画法举例举例理解5.1步骤5.2注意六、举例代码实现6.1代码6.2运行结果注意一、概念
带权路径长度最短的二叉树即最优二叉树。
二、带权路径长度
在一颗树中叶子结点带有数值这个数值叫做权值
权值与叶子结点到根节点层数的乘积带权路径长度
三、树的带权路径长度
树中所有叶节点的带权路径长度之和
四、举例 树的带权路径长度计算3x15x213
五、哈夫曼树画法举例举例理解
5.1步骤
1 先准备一组数字以5758, 92, 3为例 2 对这一组数字进行从小到大的规则排序排序结果为2, 3, 5 ,5, 7, 8, 9 3 在2, 3, 5 ,5, 7, 8, 9这些数字中选择两个最小的数字2,3 4 用类似树杈的“树枝”连接两个最小的数在顶点处计算出这两个数字的和比较剩下的数字和这个和的大小再取出两个最小的数字进行排序。 排序结果如下
5.2注意
1.如果两个数的和等于是下一步两个最小数其中一个那么这个树直接往上生长。如上图的55左边的5直接向上生长。如果两个数的和比较大不是下一步两个最小数其中一个那么就并列生长例如我们的左边5,5的和为10而10不等于接下来选出的两个数字5,7所以要另外开一棵二叉树。
2.一个节点只能生成两个分支。
六、举例代码实现
要求将2, 3, 5 ,5, 7, 8, 9画出来
6.1代码
#codingutf-8
import pygraphviz as pgv
import cv2
import os
import tkinter as tkIndex 0# 二叉树
class BTree:lchild Nonerchild Nonedata 0index 0def __init__(self, data, index):self.data dataself.index indexreturndef getchild(self, lc, rc):self.lchild lcself.rchild rcreturn# 用来预处理哈夫曼树
def PreHuffTree(bt, dot):if (bt None): returndot.add_node(bt.index, labelstr(bt.data))PreHuffTree(bt.lchild, dot)PreHuffTree(bt.rchild, dot)if (bt.lchild ! None):dot.add_edge(bt.index, bt.lchild.index, )if (bt.rchild ! None):dot.add_edge(bt.index, bt.rchild.index)return# str转换为int类型
def GetSomeValue(hl):global Indexht []for x in range(len(hl)):ht.append(BTree(int(hl[x]), Index))Index 1return ht# 对数据进行连接形成二叉树
def TransFromHuffTree(hl):global Indexif (len(hl) 0):print(未输入数值)returnwhile len(hl) 1:hl sorted(hl, keylambda x: x.data)hf BTree(hl[0].data hl[1].data, Index)Index 1hf.getchild(hl[0], hl[1])hl.pop(0)hl.pop(0)hl.append(hf)return hl[0]if __name__ __main__:HuffTreelist []root tk.Tk()values HuffTreelist []tk.Label(root, text请输入一系列数值以空格间隔 :).grid(row0, column0) # 对Label内容进行 表格式 布局v1 tk.StringVar()e1 tk.Entry(root, textvariablev1)e1.grid(row0, column1, padx10, pady5)def GetValue():global values, HuffTreelist, v1values v1.get()values values.split()for x in range(len(values)):if not values[x].isnumeric():v1.set(输入错误包含非数字字符)breakreturntk.Button(root, text确认, width10, commandGetValue).grid(row1, column0, stickytk.W, padx10, pady5)tk.Button(root, text退出, width10, commandroot.quit).grid(row1, column1, stickytk.E, padx10, pady5)tk.mainloop()root.destroy()HuffTreelist GetSomeValue(values)HuffTree TransFromHuffTree(HuffTreelist)dot pgv.AGraph(directedFalse, strictTrue)PreHuffTree(HuffTree, dot)dot.layout(dot)dot.draw(d:/b.png)pic cv2.imread(d:/b.png)cv2.imshow(hufftree, pic)cv2.waitKey(0)os.remove(d:/b.png)
代码参考https://blog.csdn.net/qq_41654225/article/details/101302587 运行结果 注意 要以空格分隔否则
注意 只能输入数字否则
正确输入2 3 5 5 7 8 9 点击确认再点击退出
6.2运行结果 注意
如果pycharm没有进行管理员运行会出现以下报错
Traceback (most recent call last):File F:/自动化测试工具/Pycharm的项目/model/teacher.py, line 107, in moduledot.draw(d:/b.png)File F:\Python\lib\site-packages\pygraphviz\agraph.py, line 1518, in drawfh self._get_fh(path, wb)File F:\Python\lib\site-packages\pygraphviz\agraph.py, line 1547, in _get_fhfh open(path, modemode)
PermissionError: [Errno 13] Permission denied: d:/b.png希望对大家有帮助
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923314.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!