树与树的表示

树的概念顾名思义,建议百度


  • 有一个m棵树的集合(也叫森林)共有k条边,问这m颗树共有多少个结点?
  • 每棵树的结点都比边多1,m棵树则多m,故共有m+k个结点

数据管理经常涉及的三个操作:删除 插入 查找,这里介绍树的查找

静态查找

  • 无哨兵
  • 有哨兵
  • 在下标为0处建立哨兵,就不需要再for循环中每次判断查找位置下标是否大于0
  • Tb1结构指针包含两个分量,一个是指向数组下标为0处的指针,一个是存放数据的数组长度
  • 运气好第一次找到,运气不好最后一次找到,平均查找次数为n/2,故时间复杂度为O(n)
  • 注意只能用数组且要有序,不能用链表

  • 注意:如果left和right的更新不是取mid+1和mid-1而是都取mid,会造成程序死循环
  • 二分查找树的查找次数即为黄色部分的深度
  • 平均查找次数ASL=(44+43+2*2+1)/11=3,有四个查找数在第四层,四个查找数在第三层,两个查找数在第二层,一个查找数在第一层

树的表示

  • 优点是:树当中每个结点结构都是统一的,同时空间浪费不大,n个结点有2n个指针域,其中树有n-1条边,则n-1个指针域是非空的,n+1个指针域是空的

  • 如果用数组表示,虽然可以完成有序,但无法知道元素的父子关系,如果用上图的链表来表示则会造成很大的空间浪费,n个结点有3n个指针域,其中有n-1条边,则n-1个指针域是非空的,2n+1个指针域是空的
    Q:在用“儿子-兄弟”法表示的树中,如果从根结点开始访问其“次子”的“次子”,所经过的结点数与下面哪种情况一样?(注意:比较的是结点数,而不是路径)

      A.从根结点开始访问其“长子”的“长子”B.从根结点开始访问其“长子”的“长子”的“长子”C.从根结点开始访问其“长子”的“长子”的“长子”的“长子”D.不能确定,要看具体树结构
    
  • 以下是访问次子的次子的情况

二叉树

  • 将儿子-兄弟树旋转45度就变成了二叉树,二叉树是度为2的树

数据结构与算法3 树(上)树与树的表示相关推荐

  1. 视频教程-Python数据结构与算法面试(上)-Python

    Python数据结构与算法面试(上) 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲师,制作视频课程超过1 ...

  2. 数据结构与算法学习笔记(五)树

    本文针对树结构中,常见的二叉树和多叉树类型进行介绍和代码分析(主要针对二叉树) 目录 一.树 1.1 介绍: 1.2 常用的概念: 1.3 树的种类: 1.4 常见的存储结构: 二.二叉树 2.1 二 ...

  3. 【数据结构与算法基础】哈夫曼树与哈夫曼编码(C++)

    前言 数据结构,一门数据处理的艺术,精巧的结构在一个又一个算法下发挥着他们无与伦比的高效和精密之美,在为信息技术打下坚实地基的同时,也令无数开发者和探索者为之着迷. 也因如此,它作为博主大二上学期最重 ...

  4. 导师计划--数据结构和算法系列(上)

    导师计划已经开始一个月了,自己的讲解的课程选择了数据结构和算法.这个系列的讲解分为上下两章,javascript语言辅助.本篇文章为上章,涉及的内容是基本的数据结构.在日本,晚上没事安排@-@,时间还 ...

  5. 导师计划 -- 数据结构和算法系列(上)

    导师计划已经开始一个月了,自己的讲解的课程选择了数据结构和算法.这个系列的讲解分为上下两章,javascript语言辅助.本篇文章为上章,涉及的内容是基本的数据结构.在日本,晚上没事安排@-@,时间还 ...

  6. 数据结构与算法(十一)Trie字典树

    本文主要包括以下内容: Trie字典树的基本概念 Trie字典树的基本操作 插入 查找 前缀查询 删除 基于链表的Trie字典树 基于Trie的Set性能对比 LeetCode相关线段树的问题 Lee ...

  7. 【数据结构与算法】【14】以树状形式打印二叉树

    技术难点 以树状形式打印二叉树的关键难点在于,如何计算和控制每个节点的打印位置 解决思路 将二叉树的所有节点从左往右全部打印出来,正好和二叉树中序遍历的结果是一样的 利用这个特点,我们就可以通过中序遍 ...

  8. 数据结构与算法--Tree(二叉树、B±树、红黑树)

    在MySQL中,索引的的实现方式中使用的最多的就是B+Tree,那么为什么要选择B+Tree呢?我们就需要从最基本的二叉查找树说起 什么是二叉树? 二叉树 = (空树) | (节点+左右子二叉树) 解 ...

  9. 【数据结构和算法笔记】哈夫曼树的概念,构造和应用(利用哈夫曼编码压缩文本)

    目录 哈夫曼树定义: 构造哈夫曼树: 哈夫曼编码 前缀编码: 应用(压缩文本) 哈夫曼树定义: 构造哈夫曼树: 哈夫曼编码 前缀编码:  哈夫曼编码是前缀编码 哈夫曼树的性质 哈夫曼树的任意非叶结点的 ...

  10. C++(数据结构与算法):52---平衡搜索树之分裂树/伸展树

    一.分裂树简介 当使用AVL树或红黑树来实现字典时,最坏情况下,每一个字典操作的时间复杂性是字典大小的对数.在已知的数据结构中,没有一个会提供更好的性能.然而,在字典的很多实际应用中,令我们更感兴趣的 ...

最新文章

  1. golang 获取 进程 名称 id
  2. Linux下按扇区读写块设备,Linux下按扇区读写块设备
  3. 开发人员不得不知的MySQL索引和查询优化
  4. 2059 - Authentication plugin ‘caching sha2 password‘ cannot be loaded:
  5. java对象赋值_Java对象引用和对象赋值
  6. 天津麒麟正式更名为麒麟软件
  7. 小米笔记本pro lol测试软件,小米笔记本Pro游戏实测,MX150显卡竟有猫腻
  8. cad中拖动文字时卡顿_cad移动图时卡顿 - 卡饭网
  9. photoshop制作透明背景图片1
  10. [MAE]Masked Autoencoders掩膜自编码器
  11. viper4android资源分享,一步一步教你如何使4.42版本ROOT并且安装Viper4Android音效软件...
  12. VUCA时代下,创业团队如何提升整体效率?
  13. 130道Python练习题,涵盖基础内容的方方面面
  14. 商业与计算机科学,新加坡留学:楷博高等教育商业信息系统与计算机科学课程解析...
  15. Vue双向绑定:原理篇(详细)
  16. 顺时针打印矩阵(编程题讲解)
  17. 《Microduino实战》——3.1 准备开发环境
  18. google浏览器设置为豆沙绿
  19. QQ,群,空间等API接口代码分享
  20. Https-证书应用

热门文章

  1. cad绘制正八边形_CAD怎么画正八边形 看完你学会了么
  2. csv文件的保存与读取
  3. 使用开源DocX 生成Word
  4. 无法从服务器中获取信息吗,无法从服务器获取信息
  5. DA14580 RW消息事件处理----转
  6. 关于前几天的招聘,我说几点
  7. iPhone14pro紫色“掉漆”/ 苹果英伟达拒绝台积电涨价/ DALL·E取消排队...今日更多新鲜事在此...
  8. Artifact springmvc-01-servlet:war exploded: 部署工件时出错。请参阅服务器日志
  9. 无法加载文件 XXX,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft问题解决
  10. Zookeeper+Hadoop+Hbase完全分布搭建数据仓库安装部署说明