树:

  • 模仿为我们现实生活中的案例生成的数据结构叫做树,Tree是由根节点和子节点组成的

二叉树的便利:前序遍历,中序遍历,后序遍历,这里的前中后指的是根节点出现的顺序;

哈夫曼树(最优二叉树)

1.相关名词:路径,路径长度,节点的权,节点的带权路径长度。

  • 路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径
  • 路径长度:在一条路径中,每经过一个结点,路径长度都要加 1 。例如在一棵树中,规定根结点所在层数为1层,那么从根结点到第 i 层结点的路径长度为 i - 1
  • 结点的权:给每一个结点赋予一个新的数值,被称为这个结点的权。
  • 结点的带权路径长度:指的是从根结点到该结点之间的路径长度与该结点的权的乘积

什么是哈夫曼树?

++当用 n 个结点(都做叶子结点且都有各自的权值)试图构建一棵树时,如果构建的这棵树的带权路径长度最小,称这棵树为“最优二叉树”,有时也叫“赫夫曼树”或者“哈夫曼树”。++

如何构建哈夫曼数?

在构建哈弗曼树时,要使树的带权路径长度最小,只需要遵循一个原则,那就是:权重越大的结点离树根越近。在图 1 中,因为结点 a 的权值最大,所以理应直接作为根结点的孩子结点。

哈夫曼树的构建过程(重点):

对于给定的有各自权值的 n个结点,构建哈夫曼树有一个行之有效的办法:

  • 在 n 个权值中选出两个最小的权值,对应的两个结点组成一个新的二叉树,且新二叉树的根结点的权值为左右孩子权值的和;
  • 在原有的 n 个权值中删除那两个最小的权值,同时将新的权值加入到 n–2 个权值的行列中,以此类推;
  • 重复 1 和 2 ,直到所以的结点构建成了一棵二叉树为止,这棵树就是哈夫曼树。

二叉树:

特性:

  • 1、左子树上所有节点的值均小于它的根节点的值;
  • 2、右子树上所有节点的值均大于它的根节点的值;
  • 3、左、右子树也分别为二叉排序树。但是一个不好会形成链表结构,比如一个有序数组形成的二叉树

平衡二叉树

特点

  • 1、在二叉树的基础上,要求两个子树的高度差不能超过1;
  • 2、每次增删都会通过一次或多次旋转来平衡二叉树;

调整平衡的基本思想

红黑树

特性

  • 1、根节点是黑色;
  • 2、每个节点或者是黑色,或者是红色;
  • 3、每个叶子节点是黑色。 [注意:这里叶子节点,是指为空的叶子节点!;
  • 4、如果一个节点是红色的,则它的子节点必须是黑色的,也就是说一个红节点的父节点只能是黑色
  • 5、从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点,也就是说确保没有一条路径会比其他路径长出俩倍

Java- 数据结构之树相关推荐

  1. Java数据结构——2-3树

    定义 2-3树是平衡的3路查找树,其中2(2-node)是指拥有两个分支的节点,3(3-node)是指拥有三个分支的节点.B-树是一种平衡的多路查找树,2-3树属于b-树,其也同样具有B-树的性质,如 ...

  2. 【Java 数据结构】树和二叉树

    篮球哥温馨提示:编程的同时不要忘记锻炼哦! 一棵倒立过来的树. 目录 1.什么是树? 1.1 简单认识树 1.2 树的概念 1.3 树的表示形式 2.二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 ...

  3. Java数据结构与算法——树(基本概念,很重要)

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 有网友私信我,期待我的下一篇数据结构.非常荣幸文章被认可,也非常感谢你们的监督. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督 ...

  4. java 二叉树 红黑树_常见数据结构(二)-树(二叉树,红黑树,B树)

    常见数据结构(二)-树(二叉树,红黑树,B树) 标签: algorithms [TOC] 本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自course ...

  5. 【数据结构】初入数据结构的树(Tree)以及Java代码实现(一)

    初入数据结构的树(Tree)以及Java代码实现(一) 树的定义 为什么叫树? 树型结构的元素具有一对多关系 树的定义 树的一些基本概念 树的结点 后代,祖先 子树.空树 树的度与高(深度),结点的度 ...

  6. 数据结构之树(JAVA实现)

    目录 1. 什么是树 2. 树的性质 3. 树的存储方式 3.1 双亲表示法: 3.2 孩子表示法 3.3 孩子兄弟表示法 4. 树的JAVA实现 4.1 双亲表示法: 4.2 孩子表示法: 4.3 ...

  7. Java学习——数据结构——Huffman树

    学习尚硅谷韩顺平老师的Java数据结构笔记,详情请移步网站 1.介绍 (1) 给定 n 个权值作为 n 个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树, ...

  8. 数据结构与算法(java):树的基本概述

    树 概述 定义 树是计算机中非常重要的一种数据结构,树是由n(n>=1)个有限结点组成的一个具有层次关系的集合.之所以叫成树,是因为它看起来像一颗倒过来的树,根朝上,树叶朝下. 相关术语 (1) ...

  9. java队列_如何彻底搞懂 Java 数据结构?CSDN 博文精选

    作者 | 张振华.Jack 责编 | 郭芮 出品 | CSDN 博客 本文和大家一起来重温<Java数据结构>经典之作. Java数据结构 要理解Java数据结构,必须能清楚何为数据结构? ...

  10. java数据结构 队列_Java数据结构与算法[原创]——队列

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本文介绍数据结构中的队列(queue)的概念.存储结构.队列的特点,文末给出ja ...

最新文章

  1. pandas使用groupby函数进行分组聚合、使用agg函数指定聚合统计计算的数值变量、并自定义统计计算结果的名称(naming columns after aggregation)
  2. linux目录默认权限是什么,linux文件目录默认权限(详解)
  3. linux防火墙之 ufw
  4. 连接没反应_显示器USB接口的作用是什么?为什么会没有反应?
  5. 快手裁员30%,大部分年薪超100w?工资越高越容易被裁,你慌了吗?
  6. Dell服务器常用管理命令总结
  7. 金融系列4《基本指令》
  8. mysql创建新用户并分配数据库权限
  9. Hibernate HQL基础 调用数据库存储过程
  10. 配置spring、SpringMVC,mybatis进行整合
  11. 企业级账号 版本更新总结
  12. 用 C# 实现带键值的优先队列
  13. 《Master Bitcoin》学习笔记02——比特币的交易模型
  14. 装饰器只有python才有吗_Python装饰器入门详解
  15. lqr算法 c语言,【CS229 lecture18】linear quadratic regulation(LQR) 線性二次型調節控制
  16. 电池型号 常见的电池型号有哪些
  17. 【Love2d从青铜到王者】第十四篇:Love2d之分享你的游戏(Distributing your game)
  18. Python_抽奖游戏
  19. html怎么设置章节,奇数页眉设置成章节名 假设此处需要显示的是章对应内容
  20. 3、集成逻辑门电路的功能和参数调试

热门文章

  1. 2023 APP群聊私聊朋友圈 即时通讯聊天系统四合一源码
  2. Android 产品变种
  3. php保留一位小数_PHP小数点后保留几位的简单示例
  4. 华为服务器装centos系统教程,服务器安装centos教程
  5. 慕课编译原理(第八章.扩充的巴科斯范式和语法图)
  6. [超详细]MySQL本地版本升级(从5.5.20到8.0.21)
  7. Python编程:cookiejar的使用
  8. Java习题-找到休息日
  9. VMware虚拟机无法识别USB设备:USB摄像头、U盘等
  10. Linux下启动、测试、关闭Redis服务