千树万树梨花开:二叉树的实现以及存储结构
前面我们讲的所有的数据结构都是线性表结构,栈、队列等等。现在我们来讲一种非线性表结构——树。
树这种数据结构比线性表的数据结构要复杂得多,内容也比较多,其应用也十分的广泛。
在正式的内容开始之前,我想先问大家一个问题:我们为什么需要二叉树?带着这个问题,我们就来学习今天的内容吧!
1. 为什么需要树这种数据结构
客观世界中许多事务存在层次关系,比如说社会组织结构以及信息管理等,这种分层次的组织被证实有着更高的效率。而将这种分层次的结构抽象到数据结构世界中,我们就得到了树这种数据结构。
我们知道,数据管理最基本的操作之一就是查找,那么,就是让我们以查找作为引子,引出树这种数据结构。查找分为静态查找和动态查找,其中静态查找是指要查找的数据是固定不变的,而动态查找是指要查找的数据是不断变化的。
1.1 从二分查找到二叉树
提到静态查找,我们最容易能想到的就是顺序查找,这种查找方法效率较低,其时间复杂度为:O(n)。
相比较于顺序查找,二分查找的效率要高很多,而且二分查找是一个基础且经典的查找算法,下面让我们来走进二分查找。
二分查找需要待处理得数据是排好序的,其基本步骤如下:
- 给出要查找的元素 key,将第一个元素置为 low,下标为 0;最后一个元素置为 high,下标为 length-1。
- mid=(low+high)/2 将 key 与序列中下标为 mid 的元素进行比较。
- 若 key 的值与下标为 mid 值相等,返回 mid
- 如果 key 的值大于下标为 mi
千树万树梨花开:二叉树的实现以及存储结构相关推荐
- 忽如一夜春风来,千树万树梨花开
" 忽如一夜春风来,千树万树梨花开 ",多么美好的诗句,迎来的是2019年的第一场雪(其实我也不知道下的到底是啥,可能是雪,也可能是雨,哈哈,我不管既然这么冷的天下了就把他当作 ...
- 古代汉语欣赏与历法 ——千树万树梨花开
梨花写得最富奇趣的当推唐代大诗人岑参的<白雪歌送武判官归京>,开头四句是这样写的: "北风卷地北草折,胡天八月即飞雪.忽如一夜春风来,千树万树梨花开." 胡天八月, ...
- (数据结构)二叉树的链式存储结构
二叉树的顺序存储的缺点 因为并不是每个二叉树都是完全二叉树,普通二叉树使用顺序表存储或多或少会存在空间浪费的现象 图 1 普通二叉树的转化 如上图 1,普通二叉树里只有二个元素,最好的存储方式当然是开 ...
- 二叉树的链式存储结构--二叉链表
1 二叉树的链式存储结构 //二叉链表的结点结构定义typedef int TElemType; typedef struct BiTNode {TElemType data;struct BiTNo ...
- C语言手写二叉树(链式存储结构)
C语言手写二叉树(链式存储结构) 二叉树结构 二叉树基本运算 代码 图例(main函数执行过程如下:) 阶段I 阶段II 阶段III 阶段IV 阶段V 先序遍历输出过程 二叉树结构 二叉树可以用顺序存 ...
- 二叉树介绍 ~ 概念、存储结构、性质
二叉树介绍 ~ 概念.存储结构.性质 1.二叉树的概念 2.特殊二叉树 3.二叉树的存储结构 4.二叉树的性质 5.相关案例 1.二叉树的概念 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由 ...
- 二叉树的链式存储结构
文章目录 前言 正文 总结 前言 上一节讲了二叉树的顺序存储,通过学习你会发现,其实二叉树并不适合用数组存储,因为并不是每个二叉树都是完全二叉树,普通二叉树使用顺序表存储或多或多会存在空间浪费的现象. ...
- 数据结构之二叉树的物理结构(存储结构)
二叉树的存储结构 双亲表示法: 孩子表示法: 孩子兄弟表示法: 三种存储结构的对比: 双亲表示法: 原理: R为头节点,所以parent=-1: ABC的双亲节点数组下标为0,所以parent=0: ...
- 数据结构笔记(1)——二叉树的基本概念+存储结构及转化
数据结构二叉树笔记(1) 二叉树定义 二叉树,有序树,无序树的区别 一个三结点的有序树,无序数,二叉树的排列 1.无序树 2.有序树 3.二叉树 二叉树的路径和路径长度 二叉树的性质 树的存储结构 1 ...
- 数据结构(C语言版)严蔚敏->二叉树(链式存储结构)的构造及其几种遍历方式(先序、中序、后序、层次)和线索二叉树
二叉树每个节点至多只有两棵子树(即二叉树中不存在度大于2的节点),并且二叉树的子树有左右之分,其次序不能任意颠倒. 1. 二叉树 二叉树一般采用链式存储结构,用链表节点来存储二叉树中每个节点.在二叉树 ...
最新文章
- Python用requests完成最简单的爬虫
- 【数据分析】年轻人如何才能实现年薪百万呢?
- boost::gil::color_spaces_are_compatible用法的测试程序
- android四个组件的跨进程通信
- 新版《谷歌搜索引擎优化初学者指南》
- 【统计学习】随机梯度下降法求解感知机模型
- 美萍系统服务器密码,从得到美萍计费管理专家管理员密码开始
- 随想录(动态库的特点)
- 小数点保留若干位小数 %.*f
- 090925 H 广联达之道 培训笔记
- json数据快速格式化
- 学java的就业方向_学Java以后的就业方向
- 揭秘!用标准Go语言能写脚本吗?
- 自动控制原理笔记-根轨迹法
- 深析C语言的灵魂 -- 指针
- 蚂蚁金服终极野心——万“税”帝国
- 农民伯伯2009年夜总结
- GBase UP是做什么的
- 今日推荐课程:机器学习极简入门
- ilasm 和 ildasm 的路径
热门文章
- 功率和能量换算公式、如何换算,W和J如何转换,power和energy转换
- 【图像压缩】多层超先验模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》
- C语言中心对称图形定义,中心对称图形的定义
- android 自定义空白,自定义对话框在android中顶部留有空白
- LOVE2D android竖屏的问题
- C++二进制文件读写,以及数据的拼合与还原
- 定积分求导例题_定积分典型例题
- web留言板整蛊网站愚人节
- Internet Explorer 包含五个预定义区域
- 从零开始学习C语言 Day 036