数据结构与算法
JM__SUN
看的到的洒脱,都是心碎后的无可奈何。。。
展开
-
数据结构与算法基础入门——手写二叉树(五)
树的概念: 树表示的是更为复杂的数据元素之间的非线性关系。 有且仅有一个 根结点 (Root) 常用的术语 结点:包含一个数据元素和若干指向其子树的分支 度(degree):结点拥有的子树的数目 叶子:度为0 的结点 孩子:结点的子树的根称为孩子结点 。。。。 结点的高度:结点到叶子结点的最长路径 结点的深度:根结点到该结点的边个数 结点的层数:结点的深度+1 树的高度:根结点的高度 。。。 满二叉树:除了叶子结点外,每一个结点都有左后两个子结点 完全二叉树:除最后一层外,其它的结点个数必须达到最大,并且原创 2022-04-09 19:39:02 · 760 阅读 · 0 评论 -
数据结构与算法基础入门——递归
1、递归的定义 程序调用自身的编程技巧 称为 递归。 对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解。另外递归与循环有一定的相似性,都是满足条件进行符合条件内的操作。 满足递归的条件: 1、一定有一个最后确定的答案。即递归终止的条件 2、子问题须与原始问题为同样的事,且更为简单 2、递归的优化 1、使用非递归。所有代码递归理论上是一定可以转换成非递归的。 2、加入缓存。把中间我们运算的结果保存起来,这样就能把原创 2022-04-04 23:16:05 · 747 阅读 · 0 评论 -
数据结构与算法基础入门——手写队列(四)
1、什么是队列? 队列是一个特殊的线性表,它只允许在表的前端(front)进行删除操作,在表的后端进行插入操作,和 栈一样队列是一种操作受限的线性表。其特性FIFO(first in first out) 先进先出。 2、队列的分类 1、顺序(单向)队列:只能在一端增加,另一端删除。 2、循环(双向)队列:每一段都能进行增加删除操作。 3、基于数组实现顺序队列 package com.example.demo; /** * @author: sun jian ming * @since: 2022/原创 2022-04-03 19:41:12 · 1122 阅读 · 0 评论 -
数据结构与算法基础入门——手写栈(三)
栈(stack),它是一种运算受限的线性表,后进先出(LIFO) LIFO(last in first out)表示就是后进入的元素, 第一个弹出栈空间. 类似于自动餐托盘, 最后放上的托盘, 往往先把拿出去使用. 其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。 向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素; 从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 时间复杂度:出/原创 2022-04-02 09:00:00 · 311 阅读 · 0 评论 -
数据结构与算法基础入门——手写链表(二)
1、什么是链表,链表的定义? 通俗的说就是通过指针将一组零散的内存块串联在一起。其中,我们把内存块称为链表的 "节点"。为了将所有的节点串在一起,每个链表的节点除了存储数据之外,还要记录下一个节点的地址。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/3f7f69ae12c2488fb762c0f40f978e63.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASk原创 2022-04-01 14:21:05 · 864 阅读 · 0 评论