| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构介绍 -> 正文阅读 |
|
[数据结构与算法]数据结构介绍 |
数据结构数据结构是计算机存储,组织数据的方式。是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来跟高的运行或者存储效率。 数据结构有: 栈:栈是一种数据先进后出的模型 队列:队列是一种数先进先出的模型 数组:数组是一种查询快,增删慢的模型 ? ? ? ? 查询数据通过地址值和索引定位,查询任意数据耗时相同,查询速度快 ? ? ? ? 删除数据时,要将原始数据删除,同时后面每个数据前移,删除效率低 ? ? ? ? 添加数据时,添加位置后的每个数据后移,再添加元素,添加效率极低 链表:链表是由一个一个节点组成的,一个节点是由数据和地址值组成的 ?链表是一种增删快,查询慢的模型(对比数组) 查询数据必须从头(head)开始查询 链表分为:单向链表和双向链表 数据结构-树二叉树?二叉树是由一个一个节点组成的,一个节点又是由父节点地址值,自身地址值,左子节点,右子节点组成的。 度:每一个节点的子节点数量(0<度<2) 二叉树中任意一个节点的度要小于等于2; ? ?二叉查找数? ? ? ? 二叉查找树,又称二叉排序树或者二叉搜索树。 ? ? ? ? 特点: ? ? ? ? ? ? ? ? 1,每一个节点上最多有两个子节点 ? ? ? ? ? ? ? ? 2,每一个节点的左子节点都小于自己 ? ? ? ? ? ? ? ? 3,每一个节点的右子节点都大于自己 ? ? ? ? 二叉查找树添节点 ? ? ? ? ? ? ? ? 规则:小的存左边,大的存右边,一样的不存 平衡二叉树? ? ? ? 二叉树左右两个子树的高度差不超过1 ? ? ? ? 任意节点的左右两个字数都是一颗平衡二叉树 ?平衡二叉树-旋转? ? ? ? 左旋 ? ? ? ? 右旋 ? ? ? ? 触发时机: ? ? ? ? ? ? ? ? 当添加一个节点之后,该树不再是一颗平衡二叉树 ? ?注意点: ? ? ? ? 判断添加元素与当前节点的关系 ? ? ? ? 成功添加之后,判断是否破坏了二叉树的平衡 ? 平衡二叉树-左左,左右? ? ? ? 左左 ? ? ? ? ? ? ? ? 在根节点左子树的左子树有节点插入,导致二叉树不平衡 ? ? ? ? 解决办法:右旋 ? ? ? ? 左右: ? ? ? ? ? ? ? ? 在根节点左子树的右子树有节点插入,导致二叉树不平衡 ? ? ? ? 解决办法:先将根节点的左子树左旋,再将跟节点右旋 平衡二叉树-右右,右左? ? ? ? 右右 ? ? ? ? ? ? ? ? 当根节点右子树的右子树有节点插入,导致二叉树不平衡? ?? ? ? ? ? 解决办法:左旋 右左: ? ? ? ? ? ? ? ? 在根节点右子树的左子树有节点插入,导致二叉树不平衡 ? ? ? ? 解决办法:先将根节点的右子树右旋,再将跟节点左旋 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 8:54:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |