云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数据结构Java8二叉树与树

数据结构Java8二叉树与树

  • 62 次阅读
  • 3 次下载
  • 2025/5/6 3:16:45

表示权值

int parent,left,right; //父母结点和左、右孩子结点下标

public TriElement(int data, int parent, int left, int right) { this.data = data; this.parent = parent; this.left = left; this.right = right; }

public TriElement(int data) {

this(data, -1, -1, -1); }

public TriElement() {

this(0, -1, -1, -1); }

public String toString() {

return \+this.data+\\+this.parent+\\+this.left+\

\+this.right+\; } }

(2) N个叶结点的二叉树共有2n-1个结点, 数据表示:

//int[] weight={5,29,7,8,14,23,3,11};

TriElement[] huftree = new TriElement[2*n-1]; 见上表

(3) 构造Huffman树

A 建类,成员变量叶子结点个数,Huffman树的结点数组TriElement[] huftree;

B对huftree初始化。

C找两个最小结点,将两个结点和的权值相加作为新结点的权值。更新相应的左右孩子及父结点的标记忆。 D重复(n-1次)C直到树建成 即:

1)从现有的树中寻找没有父结点且权值最小的两个结点 权值为min1,min2//i1,i2 0,….k huftree[m] 2)用min1+min2作权值由产生一个新的结点Tri[k] Tri[i1] Tri[i2]的双亲为K, Tri[i1].p=Tri[i2].p=k; Tri[K].left=i1; Tri[k].right=i2

public class HuffmanTree //Huffman树 {

private int leafNum; //叶子结点个数

private TriElement[] huftree; //Huffman树的结点数组

public HuffmanTree(int[] weight) //构造指定权值集合的Huffman树 {

int n = weight.length; //n个叶子结点

this.leafNum = n;

this.huftree = new TriElement[2*n-1]; //n个叶子结点的Huffman树共有2n-1个结点

for(int i=0; i

this.huftree[i] = new TriElement(weight[i]);

for(int i=0; i

{

int min1=Integer.MAX_VALUE, min2=min1; //最小和次最小权值,初值为整数最大值

int x1=-1, x2=-1; //记录两个无父母的最小权值结点下标

for(int j=0; j

if(huftree[j].data

min2 = min1; x2 = x1;

min1 = huftree[j].data; //min1记下最小权值

x1 = j; //x1记下最小权值结点的下标 }

else if(huftree[j].data

min2 = huftree[j].data;

x2 = j;

搜索更多关于: 数据结构Java8二叉树与树 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

表示权值 int parent,left,right; //父母结点和左、右孩子结点下标 public TriElement(int data, int parent, int left, int right) { this.data = data; this.parent = parent; this.left = left; this.right = right; } public TriElement(int data) { this(data, -1, -1, -1); } public TriElement() { this(0,

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com