高中毕业之后就没有写过东西了,现在准备把每天学的一点点都记录下来,希望最后这些一点点能够汇聚起来在漆黑一片的荒野发出小小的光芒。(强行文艺,最为致命= =)

LeetCode

早上起来做了三道简单的编程题,都与二叉树相关,使用的语言是JS。在LeetCode里题号分别为104,107,108。

求二叉树的深度。做的时候看了一下以前的数据结构作业,所以毫无压力就写出来了。

心路历程:

  1. 二叉树深度是啥:就是二叉树一共有多少层
  2. 用什么思想解题:递归(以当前节点为根节点的二叉树的层数(D) = 以它子节点为根节点的二叉树层数(d)+1)
  3. 递归的出口是什么:这棵树我已经遍历完了 4. 递归需要的参数是什么:节点

对二叉树进行层次遍历。(我能说最开始看英文的题目我理解错意思了么,耽误了好长时间TT)

心路历程:

  1. 二叉树层次遍历是啥:就是把二叉树每层的节点都存起来,如果我们知道每个节点在第几层就可以直接把它放在它该待的地方了,所以其实就是遍历的同时找出它呆的层数这样就可以把它放进该放的位置
  2. 用什么思想解题:递归,递归的百度百科里写递归的应用,第三条应用就是“数据的结构形式是按递归定义的。如二叉树、广义表等,由于结构本身固有的递归特性,则它们的操作可递归地描述。”(当前节点呆在的层数(D) = 它父节点呆的层数(d)+1)
  3. 递归的出口是什么:这棵树我已经遍历完了
  4. d怎么得到:将父节点呆的层数作为参数传递
  5. 递归需要的参数是什么:节点,该节点的父节点呆的层数
  6. 需要的参数与题目给的不同怎么办:另写一个函数作为递归函数

将一个升序的数组转换为二叉查找树。

心路历程:

  1. 二叉树查找树是啥:左节点小于根节点,右节点大于根节点。所以根节点就是升序数组的中间值,根节点的左节点就是中间切断后左边剩下的数组的中间值,右边同理详细解释点这里
  2. 用什么思想解题:二分查找呀,还有递归
  3. 递归的出口是什么:左边数组的最小的值比右边最大的还大就说明都找完了
  4. 递归需要的参数是什么:原始数组,要查找的子数组的开始位置与结束位置
  5. 需要的参数与题目给的不同怎么办:同上

前端小项目

最喜欢的一部分~今天写了猜拳小游戏,点这里来跟我的小项目猜拳呀 项目要求在这里

心路历程:

  1. 素材准备:石头.png,剪刀.png,布.png
  2. 组件:计数栏,出拳栏,战况展示栏(响应式)
  3. 要实现啥:玩家想出啥就出啥(点击事件),电脑随机出拳(Math.random()),判断胜负(游戏规则),记录获胜局数(闭包),显示战况(玩家出的+电脑出的+获胜局数)(DOM操作)
  4. 调试

操作系统

  1. 操作系统的四个特性。
  2. 操作系统的主要功能。
  3. 进程的有哪几种状态,状态转换图,及导致转换的事件。
  4. 进程与线程的区别。
  5. 进程通信的几种方式。
  6. 进程同步的几种方式
  7. 用户态和核心态的区别。
  8. 死锁的概念,导致死锁的原因.
  9. 导致死锁的四个必要条件。
  10. 处理死锁的四个方式。
  11. 预防死锁的方法、避免死锁的方法。
  12. 进程调度算法。
  13. 内存连续分配方式采用的几种算法及各自优劣。
  14. 基本分页储存管理方式。
  15. 基本分段储存管理方式。
  16. 分段分页方式的比较各自优缺点。
  17. 几种页面置换算法,会算所需换页数
  18. 虚拟内存的定义及实现方式。

看的这个