前面我们讲的所有的数据结构都是线性表结构,栈、队列等等。现在我们来讲一种非线性表结构——树。

树这种数据结构比线性表的数据结构要复杂得多,内容也比较多,其应用也十分的广泛。

在正式的内容开始之前,我想先问大家一个问题:我们为什么需要二叉树?带着这个问题,我们就来学习今天的内容吧!

1. 为什么需要树这种数据结构

客观世界中许多事务存在层次关系,比如说社会组织结构以及信息管理等,这种分层次的组织被证实有着更高的效率。而将这种分层次的结构抽象到数据结构世界中,我们就得到了树这种数据结构。

我们知道,数据管理最基本的操作之一就是查找,那么,就是让我们以查找作为引子,引出树这种数据结构。查找分为静态查找和动态查找,其中静态查找是指要查找的数据是固定不变的,而动态查找是指要查找的数据是不断变化的。

1.1 从二分查找到二叉树

提到静态查找,我们最容易能想到的就是顺序查找,这种查找方法效率较低,其时间复杂度为:O(n)。

相比较于顺序查找,二分查找的效率要高很多,而且二分查找是一个基础且经典的查找算法,下面让我们来走进二分查找。

二分查找需要待处理得数据是排好序的,其基本步骤如下:

  1. 给出要查找的元素 key,将第一个元素置为 low,下标为 0;最后一个元素置为 high,下标为 length-1。
  2. mid=(low+high)/2 将 key 与序列中下标为 mid 的元素进行比较。
  3. 若 key 的值与下标为 mid 值相等,返回 mid
  4. 如果 key 的值大于下标为 mi

千树万树梨花开:二叉树的实现以及存储结构相关推荐

  1. 忽如一夜春风来,千树万树梨花开

      " 忽如一夜春风来,千树万树梨花开 ",多么美好的诗句,迎来的是2019年的第一场雪(其实我也不知道下的到底是啥,可能是雪,也可能是雨,哈哈,我不管既然这么冷的天下了就把他当作 ...

  2. 古代汉语欣赏与历法 ——千树万树梨花开

    梨花写得最富奇趣的当推唐代大诗人岑参的<白雪歌送武判官归京>,开头四句是这样写的:  "北风卷地北草折,胡天八月即飞雪.忽如一夜春风来,千树万树梨花开."  胡天八月, ...

  3. (数据结构)二叉树的链式存储结构

    二叉树的顺序存储的缺点 因为并不是每个二叉树都是完全二叉树,普通二叉树使用顺序表存储或多或少会存在空间浪费的现象 图 1 普通二叉树的转化 如上图 1,普通二叉树里只有二个元素,最好的存储方式当然是开 ...

  4. 二叉树的链式存储结构--二叉链表

    1 二叉树的链式存储结构 //二叉链表的结点结构定义typedef int TElemType; typedef struct BiTNode {TElemType data;struct BiTNo ...

  5. C语言手写二叉树(链式存储结构)

    C语言手写二叉树(链式存储结构) 二叉树结构 二叉树基本运算 代码 图例(main函数执行过程如下:) 阶段I 阶段II 阶段III 阶段IV 阶段V 先序遍历输出过程 二叉树结构 二叉树可以用顺序存 ...

  6. 二叉树介绍 ~ 概念、存储结构、性质

    二叉树介绍 ~ 概念.存储结构.性质 1.二叉树的概念 2.特殊二叉树 3.二叉树的存储结构 4.二叉树的性质 5.相关案例 1.二叉树的概念 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由 ...

  7. 二叉树的链式存储结构

    文章目录 前言 正文 总结 前言 上一节讲了二叉树的顺序存储,通过学习你会发现,其实二叉树并不适合用数组存储,因为并不是每个二叉树都是完全二叉树,普通二叉树使用顺序表存储或多或多会存在空间浪费的现象. ...

  8. 数据结构之二叉树的物理结构(存储结构)

    二叉树的存储结构 双亲表示法: 孩子表示法: 孩子兄弟表示法: 三种存储结构的对比: 双亲表示法: 原理: R为头节点,所以parent=-1: ABC的双亲节点数组下标为0,所以parent=0: ...

  9. 数据结构笔记(1)——二叉树的基本概念+存储结构及转化

    数据结构二叉树笔记(1) 二叉树定义 二叉树,有序树,无序树的区别 一个三结点的有序树,无序数,二叉树的排列 1.无序树 2.有序树 3.二叉树 二叉树的路径和路径长度 二叉树的性质 树的存储结构 1 ...

  10. 数据结构(C语言版)严蔚敏->二叉树(链式存储结构)的构造及其几种遍历方式(先序、中序、后序、层次)和线索二叉树

    二叉树每个节点至多只有两棵子树(即二叉树中不存在度大于2的节点),并且二叉树的子树有左右之分,其次序不能任意颠倒. 1. 二叉树 二叉树一般采用链式存储结构,用链表节点来存储二叉树中每个节点.在二叉树 ...

最新文章

  1. Python用requests完成最简单的爬虫
  2. 【数据分析】年轻人如何才能实现年薪百万呢?
  3. boost::gil::color_spaces_are_compatible用法的测试程序
  4. android四个组件的跨进程通信
  5. 新版《谷歌搜索引擎优化初学者指南》
  6. 【统计学习】随机梯度下降法求解感知机模型
  7. 美萍系统服务器密码,从得到美萍计费管理专家管理员密码开始
  8. 随想录(动态库的特点)
  9. 小数点保留若干位小数 %.*f
  10. 090925 H 广联达之道 培训笔记
  11. json数据快速格式化
  12. 学java的就业方向_学Java以后的就业方向
  13. 揭秘!用标准Go语言能写脚本吗?
  14. 自动控制原理笔记-根轨迹法
  15. 深析C语言的灵魂 -- 指针
  16. 蚂蚁金服终极野心——万“税”帝国
  17. 农民伯伯2009年夜总结
  18. GBase UP是做什么的
  19. 今日推荐课程:机器学习极简入门
  20. ilasm 和 ildasm 的路径

热门文章

  1. 功率和能量换算公式、如何换算,W和J如何转换,power和energy转换
  2. 【图像压缩】多层超先验模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》
  3. C语言中心对称图形定义,中心对称图形的定义
  4. android 自定义空白,自定义对话框在android中顶部留有空白
  5. LOVE2D android竖屏的问题
  6. C++二进制文件读写,以及数据的拼合与还原
  7. 定积分求导例题_定积分典型例题
  8. web留言板整蛊网站愚人节
  9. Internet Explorer 包含五个预定义区域
  10. 从零开始学习C语言 Day 036