首页 > 编程知识 正文

二叉搜索树建立,Python用列表定义二叉树

时间:2023-05-06 08:03:04 阅读:168545 作者:3731

Huffman Tree,哈夫曼树(又称霍夫曼树、哈夫曼树),是基于贪婪算法思想构建的二叉树,贪婪算法在造树过程中寻求局部最优,最终迭代全局最优Huffman Tree的贪婪算法的思想是寻找能成为WPL带路的最小二叉树的二叉树。 因此,哈夫曼树也被称为最佳二叉树。

目前正在基于二进制树,用Python构建哈夫曼树:

生成importrandomfrombinarytreeimportnodedefapp (: data=[ ] #随机测试数据。 forIinrange(5) :data.append ) random.randint (1,50 ) Random.shuffle(data ) print (data ) Huffman _ tree=print(---- ) print(data ) def build _ Huffman _ tree (data ) :nodes=[] forIindata3360nodes.append ) node nodes ) print ('开始构建Huffman树' (whiletrue:print('-' ) nodes=sorted(nodes,nodes,huffffman ) ) nodes(iflen ) nodes )==1: print ('只剩下一个节点, 以树为结束) break left=nodes.pop(0)0) right=nodes.pop(0) ) (打印) )选择节点right.value(root=node ) lean

测试一些算法日志输出:

[ 22,26,29,10,24 ] nodes [ node ],Node(22,node[26],Node(29,Node(10, 节点[ 24 ] Huffman树-节点(29 ) )节点1022 -节点(24 )、节点(26 )、节点(29 )和节点(32 )开始构建节点(24 ) 节点) 39 )选择节点50 (61 ) (节点50 (61 -节点) 111 ) )只剩下一个节点,且生成树结束-----最终的Huffman树_ _ _ 111 _ )

[ 21,38,18,27,5 ] nodes [ node ],Node(21,Node(38,node[18],node[27],node[5]huffman树- nodes ) 节点) 38 ) ]节点21 ) 23 -节点[节点6527 ],节点38 )被选择节点65 )节点44 ) 65 -节点65 )节点109 )中的一个

[ 15,2,13,31,44 ] nodes [ node ],Node(15,Node(2,node[13],node[31],node[44]huffman树- nodes ) 节点) 44 ) ]选择节点15 (节点) 30 )、节点31 )节点(节点61 ) (节点4461 -节点(节点) 105 ) )只剩下一个节点,生成树并结束

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。