
数据结构
Noone0^
欲渡黄河冰塞川,将登太行雪满山。
展开
-
二叉树的层序遍历
层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。这种遍历的方式和我们之前讲过的都不太一样。需要借用一个辅助数据结构队列来实现,队列先进先出,符合一层一层遍历的逻辑,而是用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(原创 2020-09-14 23:53:56 · 103 阅读 · 0 评论 -
数据结构--顺序表&链表
数据结构--顺序表&链表1.线性表2.顺序表2.1概念及基本结构2.2 接口实现1.线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以顺序结构和链式结构的形式存储。特征:对于同一个线性表,其每一个数据元素的值虽然不同,但必须具有相同的数据类型;数据元素之间具有一原创 2020-07-26 15:49:01 · 446 阅读 · 0 评论 -
二叉搜索树及其模拟实现
二叉搜索树1.二叉搜索树1.1二叉搜索树的概念1.2二叉搜索树操作在对map/multimap/set/multiset进行了简单的了解后,会发现这几个容器有个共同点是:其底层都是按照二叉搜索树来实现的。那什么是二叉搜索树?其底层是二叉搜索树吗?1.二叉搜索树1.1二叉搜索树的概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜原创 2020-07-22 18:28:40 · 179 阅读 · 0 评论 -
数据结构--二叉树&堆及其实现
数据结构--二叉树&堆及其实现1.树的概念及结构1.1树的概念1.2树的表示2.二叉树的概念及结构2.1概念2.2特殊的二叉树2.3二叉树的存储结构3.二叉树的顺序结构及实现3.1堆的概念及结构3.2堆的实现3.2.1堆向下调整算法&向上调整算法3.2.2堆的创建3.2.3堆的插入3.2.4堆的删除3.3堆排序3.3.1实现过程3.4模拟实现堆4.二叉树链式结构的模拟实现1.树的概念及结构1.1树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的原创 2020-07-22 10:24:38 · 425 阅读 · 0 评论 -
时间复杂度和空间复杂度
时间复杂度和空间复杂度1.算法效率2.时间复杂度2.1概念2.2大O的渐进表示法3.空间复杂度1.算法效率算法效率分析分为两种:时间效率和空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。2.时间复杂度2.1概原创 2020-06-22 15:25:40 · 258 阅读 · 0 评论 -
C++中常见的string类题目
C++中常见的string类题目翻转字符串字符串中的第一个唯一字符计算字符串最后一个单词的长度一级目录一级目录翻转字符串leetcode344题: 翻转字符串思路: 双指针,交换头尾两个指针所指的两个位置的值,指针向中间移动一个位置。重复以上操作,直到两个指针指向同一位置。class Solution {public: void reverseString(vector<char>& s) { if(s.empty()) return;原创 2020-06-06 14:39:45 · 760 阅读 · 0 评论 -
二叉树的前/中/后序遍历
二叉树的前、中、后序遍历1.前序遍历2.中序遍历3.后序遍历1.前序遍历前序遍历:根->左->右 (搜索和创建一颗新的树)1.递归法:调整访问顺序class Solution1{ public: vector<int> preTraversal(TreeNode* root){ vector<int> ret; ...原创 2020-05-08 16:10:31 · 215 阅读 · 0 评论