![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
JM__SUN
看的到的洒脱,都是心碎后的无可奈何。。。
展开
-
数据结构与算法基础入门——手写二叉树(五)
树的概念:树表示的是更为复杂的数据元素之间的非线性关系。有且仅有一个 根结点 (Root)常用的术语结点:包含一个数据元素和若干指向其子树的分支度(degree):结点拥有的子树的数目叶子:度为0 的结点孩子:结点的子树的根称为孩子结点。。。。结点的高度:结点到叶子结点的最长路径结点的深度:根结点到该结点的边个数结点的层数:结点的深度+1树的高度:根结点的高度。。。满二叉树:除了叶子结点外,每一个结点都有左后两个子结点完全二叉树:除最后一层外,其它的结点个数必须达到最大,并且原创 2022-04-09 19:39:02 · 768 阅读 · 0 评论 -
数据结构与算法基础入门——递归
1、递归的定义程序调用自身的编程技巧 称为 递归。对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解。另外递归与循环有一定的相似性,都是满足条件进行符合条件内的操作。满足递归的条件:1、一定有一个最后确定的答案。即递归终止的条件2、子问题须与原始问题为同样的事,且更为简单2、递归的优化1、使用非递归。所有代码递归理论上是一定可以转换成非递归的。2、加入缓存。把中间我们运算的结果保存起来,这样就能把原创 2022-04-04 23:16:05 · 756 阅读 · 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 · 1128 阅读 · 0 评论 -
数据结构与算法基础入门——手写栈(三)
栈(stack),它是一种运算受限的线性表,后进先出(LIFO)LIFO(last in first out)表示就是后进入的元素, 第一个弹出栈空间. 类似于自动餐托盘, 最后放上的托盘,往往先把拿出去使用.其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。时间复杂度:出/原创 2022-04-02 09:00:00 · 325 阅读 · 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 · 869 阅读 · 0 评论