
数据结构
Lange_Taylor
从零开始
展开
-
二叉树概念
1.掌握树的基本概念树:是一类重要的非线性数据结构,是以分支关系定义的层次结构。每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树2. 掌握树的相关概念节点的度:一个节点含有的子树的个数称为该节点的度; 如上图:A的为6叶节点或终端节点:度为0的节点称为叶节点; 如上图:B、C、H、I…等节点为叶节点...原创 2019-05-28 18:31:20 · 16149 阅读 · 2 评论 -
每日一题
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/** * Definition for singly-linked list. * struct ListNode { * int val; * ...原创 2019-09-06 12:23:16 · 248 阅读 · 0 评论 -
二叉树后序遍历非递归
给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]12/3输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?class Solution {public: vector<int> postorderTraversal(TreeNode* root) { vector<int> v; ...原创 2019-08-22 19:26:49 · 263 阅读 · 0 评论 -
各种排序代码实现
基于C语言实现的Sort.h文件:#pragma once//时间复杂度:O(N^2)//空间复杂度:O(1)//稳定性;稳定//冒泡排序void BubbleSort(int arr[], int len);//应用场景;数据量小,接近有序//时间复杂度:O(N^2)//空间复杂度:O(1)//稳定性;稳定//插入排序void InsertSort(int arr[]...原创 2019-08-16 16:22:06 · 552 阅读 · 0 评论 -
二叉树遍历
1.一颗二叉树的前序遍历是ABCDFGHE,后序遍历是BGHFDECA,中序遍历是?根据二叉树的前序遍历可知A为根节点,再根据前序遍历ABCDFGHE和后序遍历BGHFDECA可知,B在后序遍历处于第1位,所以B一定为A的左子树,且A的左子树只有B。再根据前序和后序遍历C为A的右子树。接下来再看后序遍历,我们可以看到E是在C前面;在前序遍历中E排在最后,说明E是C的右子树并且C的右子树唯一,所以...原创 2019-08-11 19:01:06 · 3171 阅读 · 0 评论 -
每日一题
求字典序在s1和s2之间的,长度在len1到len2的字符串的个数,结果mod 1000007。输入描述:每组数据包涵s1(长度小于100),s2(长度小于100),len1(小于100000),len2(大于len1,小于100000)输出描述:输出答案。示例1输入ab ce 1 2输出56本质:26进制进行计算/*补齐字符串,按照26进制进行计算*/#includ...原创 2019-08-18 18:51:30 · 481 阅读 · 1 评论 -
STL标准模板vector.list
vector与list对比vectorlist尾插和尾删时间复杂度O(1);任意位置的插入删除时间复杂度O(N)删除尾节点O(N)(不带头节点的单链表);有保存则为O(N) ;任意位置插入删除O(1);底层空间为一段连续的空间底层空间不是连续的支持随机访问 (基于底层空间的结构)不支持随机访问空间容量需要扩容不需要扩容应用场景不同(少操作高效存...原创 2019-07-30 19:14:56 · 119 阅读 · 0 评论 -
链式二叉树实现
顺序存储结构和链式存储结构的比较优缺点顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。 优点:存储密度大(=1),存储空间利用率高。 缺点:插入或删除元素时不方便。 链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针 优点:插入或删除元素时很方便,使用灵活。 ...原创 2019-06-05 15:28:30 · 334 阅读 · 0 评论 -
如何评价一个算法的好坏
首先,这个算法必须是正确的其次,好的算法应该是友好的,便于人们理解和交流,并且是机器可执行的。这个算法还需要足够健壮,即当输入的数据非法或不合理时,也能适当的做出正确的反应或进行相应的处理最后它还必须拥有高效率和低存储量要求。也就是所谓的时间复杂度和空间复杂度1.时间复杂度定义:在计算机科学中,算法的时间复杂度是一个函数,他定量描述了该算法的运行时间.一个算法执行所耗费的时间,从理论上...原创 2019-04-27 21:38:39 · 13889 阅读 · 0 评论 -
顺序表与链表 栈和栈区 循环队列判空/满
顺序表与链表的不同点顺序表链表尾插和尾删时间复杂度O(1);任意位置的插入删除时间复杂度O(N)删除尾节点O(N)(不带头节点的单链表);有保存则为O(N) ;任意位置插入删除O(1);底层空间为一段连续的空间底层空间不是连续的支持随机访问 (基于底层空间的结构)不支持随机访问空间容量需要扩容不需要扩容应用场景不同(少操作高效存储)(栈的实现)...原创 2019-05-13 11:15:32 · 1226 阅读 · 0 评论 -
栈和队列c实现
什么是栈,栈有什么特性?栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作.进行数据插入和删除操作的一端称为栈顶,另一端称为栈底.栈中元素遵循后进先出LIFO(Last In First Out)的原则.请用C语言实现一个动态栈stack.h#pragma oncetypedef int STDataType;typedef struct Stack{ ST...原创 2019-05-17 11:54:24 · 233 阅读 · 0 评论 -
堆C实现
顺序结构存储二叉树堆:1. 熟悉堆的概念以及特性堆分为大堆小堆.n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。(ki <= k2i,ki <= k2i+1)或者(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4…n/2)若将和此次序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树,则堆的含...原创 2019-05-27 14:20:50 · 351 阅读 · 0 评论 -
二叉树遍历
树的节点结构: * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * };前序...原创 2019-09-15 18:06:28 · 265 阅读 · 0 评论