最优二叉搜索树和哈夫曼树,求二叉树的深度python
类节点(: )
数据=0
左=无
右=无
父亲=无
def __init__(self,data,left,right):
self.data=数据
self.left=left
self.right=右
这里定义了节点类。
声明左右节点和父节点,父节点用于输出yjfdsj代码。
初始化构造函数,并为数据和左右节点赋值。不要在这里初始化父节点。如果是self,和这个关键词一样。
Root=无
声明根节点
defzHuanhuan(ARR,index,n):
ifindex=Len(ARR):
没有人返回
否则:
left=node(arr[index],None,None))))))))).
num 1=arr[索引] n.data
Node=node (num 1,left,n))。
左.父=节点
父节点
如果索引==0:
指数=1
ifindex==Len(ARR )-1:
全球频道
根节点
z官方(Arr,index 1,node))。
这是一个将数组转换成yjfdsj树的转换函数,其中传递的参数arr是数组,index是下标,n是节点。定义节点是为了防止几个节点断开连接。
如果索引大于数组的长度,则退出。
如果小于,继续构建yjfdsj树。
根据yjfdsj树的构造原理,传递一个数组的值,并给出递归表示两者之和的节点的传递构造函数。
left=node(arr[index],None,None))))))))).
num 1=arr[索引] n.data
Node=node (num 1,left,n))。
中间是用构造函数初始化的代码。
左.父=节点
父节点
将左右节点的父节点指向node。
因为数组从0到len(arr )-1
所以当索引满足ifindex==Len(arr )-1:
将全局根定义为根节点。
全球频道
根节点
然后递归返回zHuanhuan(ARR,index 1,node))。
标志=假
v=[]
定义bool类型数组的标志。
对于范围(100):
动词(verb的缩写)申请(假))。
初始化100假
输出yjfdsj编码功能
定义显示(n):
全球旗帜全球旗帜
全球arm记录号数组
全局ard记录字符串的不同字符。
如果n!=If=None:节点不为空。
for if(n . left==none and n . right==none)或flag==true://叶节点,或者遍历父节点
if v[n.data]!=true and(n . left==none and n . right==none))://
for range(Len)ARM)://将数字转换为原始字符代码。比如A出现4次后,在yjfdsj树中记录为4,这个循环又把4转换为A。
if n.data==arm[i]:
打印ard [I],:,
布莱克
如果。father==none://如果父节点为空,则意味着遍历可以结束。
flag=False
返回
Else://如果父节点不为空,则继续循环遍历。
将flag=True标志设置为
Show(n.father )//遍历父节点
If n==n.father.right:右子树,输出1。
1,,
Else://如果使用了左子木,则输出0。
0,,
否则:递归遍历yjfdsj树,而不是叶节点。
正在显示(左侧)
显示(右侧).
请输入打印“字符串:”
str=raw_input()
Arr=[]#字符数组
arr=str
Ard=[]//记录中有几个不同的字符数组
for range(len(arr))://将不同的字符放入ard字符数组
标志=真
财富(贷款)ard):
if ard[j]==arr[i]:
flag=False
布莱克
If旗!=假:
ard.append(arr[I]))).
Arm=[]//权重数组
ForIinrange(Len)ard)):///更新权重
arm.append(0)).
傅立叶变换(透镜阵列):
财富(贷款)ard):
If arr[i]==ard[j]://每当此字符出现时,权重层次结构数组就递增1。
arm[j]=1;
布莱克
for range(len(ard)-1)://插入排序
Temp=ard[i 1]//记录下一个数字
temp1=arm[i 1]
j=i
而j-1和temp1
臂[j 1]
ard[j 1]
j-=1
arm[j 1]=temp1
ard[j 1]=温度
打印
打印每个元素的最小代码是:,
ZHuanhuan(arm,0,node) arm[1],None,None))/把排序后的内容放进去构建yjfdsj树。
show(root)//递归输出yjfdsj代码
#生活毫无意义。我们的存在是为了赋予意义
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。