IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 从零开始学数据结构和算法(七) huffman 树与 AVL 树,阿里+头条+腾讯等大厂Android面试题分享 -> 正文阅读

[移动开发]从零开始学数据结构和算法(七) huffman 树与 AVL 树,阿里+头条+腾讯等大厂Android面试题分享

  • 左旋

  • 右旋

代码

Huffman 树

public class HuffmanTree {

TreeNode root;

public TreeNode createHuffManTree(ArrayList list) {

while (list.size() > 1) {

Collections.sort(list);

TreeNode left = list.get(list.size() - 1);

TreeNode right = list.get(list.size() - 2);

TreeNode parent = new TreeNode(“p”, left.weight + right.weight);

parent.leftChild = left;

left.parent = parent;

parent.rightChild = right;

right.parent = parent;

list.remove(left);

list.remove(right);

list.add(parent);

}

root = list.get(0);

return list.get(0);

}

public void showHuffman(TreeNode root) {

LinkedList list = new LinkedList<>();

list.offer(root);//入队

while (!list.isEmpty()) {

TreeNode node = list.pop();

System.out.println(node.data);

if (node.leftChild != null) {

list.offer(node.leftChild);

}

if (node.rightChild != null) {

list.offer(node.rightChild);

}

}

}

@Test

public void test() {

ArrayList list = new ArrayList<>();

TreeNode node = new TreeNode(“good”, 50);

list.add(node);

list.add(new TreeNode(“morning”, 10));

TreeNode node2 =new TreeNode(“afternoon”, 20);

list.add(node2);

list.add(new TreeNode(“hell”, 110));

list.add(new TreeNode(“hi”, 200));

HuffmanTree tree = new HuffmanTree();

tree.createHuffManTree(list);

tree.showHuffman(tree.root);

getCode(node2);

}

/**

  • 编码

*/

public void getCode(TreeNode node) {

TreeNode tNode = node;

Stack stack = new Stack<>();

while (tNode != null && tNode.parent != null) {

//left 0 right 1

if (tNode.parent.leftChild == tNode) {

stack.push(“0”);

} else if (tNode.parent.rightChild == tNode) {

stack.push(“1”);

}

tNode = tNode.parent;

}

System.out.println();

while (!stack.isEmpty()) {

System.out.print(stack.po
p());

}

}

/**

  • 结点

  • @param

*/

public static class TreeNode implements Comparable<TreeNode> {

T data;

int weight;

TreeNode leftChild;

TreeNode rightChild;

TreeNode parent;

public TreeNode(T data, int weight) {

this.data = data;

this.weight = weight;

leftChild = null;

rightChild = null;

parent = null;

}

@Override

public int compareTo(@NonNull TreeNode o) {

if (this.weight > o.weight) {

return -1;

} else if (this.weight < o.weight) {

return 1;

}

return 0;

}

}

}

平衡二叉树

ld = null;

parent = null;

}

@Override

public int compareTo(@NonNull TreeNode o) {

if (this.weight > o.weight) {

return -1;

} else if (this.weight < o.weight) {

return 1;

}

return 0;

}

}

}

平衡二叉树

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-25 10:42:32  更:2022-01-25 10:44:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:04:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码