
数据结构
D_4_Y_
不后悔且快乐
展开
-
二叉树的前序遍历
一、递归实现前序遍历首先访问根节点,然后遍历左子树,最后遍历右子树上图中蓝色数字简单标出遍历过程,因此前序遍历为:7->3->8->2->4->1->6题目描述:给定一棵二叉树,返回它的前序遍历C语言:struct TreeNode{ int val; struct TreeNode* left; struct TreeNode*...原创 2019-04-19 23:42:47 · 435 阅读 · 0 评论 -
二叉树的中序遍历
一.递归二叉树的中序遍历过程为先遍历左子树,再访问根节点,最后遍历右子树首先访问根节点7的左子树,访问节点3,3没有左子树,则访问右子树5根节点的左子树遍历完,访问根节点最后访问根节点的右子树2,访问2的左子树1,1没有左右子树,返回2,访问2的右子树,为空返回节点因此中序遍历为:3->5->7->1->2C语言: struct TreeNode { ...原创 2019-04-20 11:25:08 · 345 阅读 · 0 评论 -
二叉树的层序遍历
一.层序遍历概念:按行进行二叉树遍历使用队列结构,当队头节点出队时,如果它的左右节点不为空,则左右节点进队列计算队列的大小size, 将每一行节点val值放进一个vector< int >结构中,size–,对头节点出队列,将它左右节点push进队列中,循环直到size为0将每行vector< int >尾插进一个vector<vector< int...原创 2019-04-20 15:51:15 · 178 阅读 · 0 评论 -
单链表判环及环入口
1.判断单链表内是否有环?设置两个指针,一个快指针,一个慢指针,起初都指向头结点让快指针一次走两步,满指针一次走一步,如果链表内有环的话,经过一定次数后,快慢指针会相遇,则证明链表内有环(可参照下图例子)struct ListNode{ int val; ListNode* next;}class Solution{public: bool hasCycle...原创 2019-04-13 20:34:16 · 293 阅读 · 0 评论 -
排序算法(下)
一、交换排序基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动冒泡排序void BubbleSort(int a[],int len){ for(int i=0;i<len;++i) { for(int j=0;j<len-i-...原创 2019-03-26 14:17:14 · 113 阅读 · 0 评论 -
排序算法(上)
一、排序的概念概念:排序就是使一串记录,按照其中某些关键字的大小,递增或递减的排列起来的操作稳定性:假定在原创 2019-03-25 17:22:28 · 125 阅读 · 0 评论 -
时间复杂度和空间分析
1.算法效率算法效率分析分为两种:一是时间效率,二是空间效率。时间效率被称为时间复杂度,而空间效率被称为空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。2.时间复杂度1.概念定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的...原创 2018-10-10 17:27:13 · 363 阅读 · 0 评论 -
栈和队列的互相实现
一.用队列实现栈class MyStack {public: void push(int x) { q1.push(x); } //删除栈顶元素并返回元素值 int pop() { int size=q1.size()-1; while(size--) { q2.p...原创 2019-05-06 20:46:37 · 183 阅读 · 0 评论 -
合法括号序列判断(利用栈)
题目描述:给定一个括号字符串序列和一个整型数字,如果括号匹配合法则输出“Y”,否则输出“N”例如:输入:“(()()” 5输出:N输入:“(()())” 6输出:Y输入:"((a))" 5输出:Y解决思想:运用栈结构,当字符为左括号或者字符时入栈当字符为右括号且栈顶元素为左括号时出栈当栈顶元素为字符时,则一直循环出栈直到栈顶元素为括号如果最终栈为空则匹配合法,否则...原创 2019-05-28 19:45:02 · 707 阅读 · 0 评论