最优二叉搜索树和哈夫曼树,求二叉树的深度python

  最优二叉搜索树和哈夫曼树,求二叉树的深度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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: