- 博客(22)
- 收藏
- 关注
原创 nvm管理node好的博文汇总
nvm管理node好的博文汇总步骤按一下博文安装nvm 和 node版本nvm安装node修改node安装包时的路径配置node安装包的路径安装cnpmcnpm安装可能出现的问题需要修改nvm中的settings文件在文件中加这两段nvm切换node时报错nvm切换node出现乱码npm下载包报错解决方法...
2022-05-22 16:35:05 162
原创 14验证是否是儿叉搜索树
14验证是否是儿叉搜索树思路判断是不是二叉搜索树,这里的思路和之前的都不一样利用根节点的值要比左子树的最大值大,要比右子树的最小值大,将这种约束传递给左右子树,感觉像是自顶向下,最最根结点满足二叉树的特性,然后将这种约束传递给左右子树就好,所以结果是返回左右子树的&&代码var isValidBST = function(root) { var isValidBSTMin = function(root,min,max) { if (!root) {
2022-03-25 16:57:40 388
原创 13BST 转化累加树
13BST 转化累加树思路将某一结点的值转化为它本身 + 二叉搜索树中比他大的所以可以利用二叉树搜索树的特点,二叉搜索树的中序遍历结果是升序的,那么可以采用改编版本的中序遍历,先递归访问右子树,再访问根节点,再递归访问左子树,再利用一个变量sum记录已访问过的结点的累加和,到了处理这个结点时,结点的值就等于它本身加上sum,这样最后得到的就是累加树(从右吃到左边)代码var convertBST = function(root) { var sum = 0;
2022-03-25 15:53:26 400
原创 10二叉树的最大深度及最长路径问题
10二叉树的最大深度及最长路径问题思路最大深度及最长路径的思路很像,最大深度是,判断左右子树的最大深度,最大的那个加上自己就是树的最大深度(那么要知道左右子树的最大深度,还是需要用到后序遍历)最长路径是,判断左右子树的最大深度,左子树的最大深度加上右子树的最大深度就是这颗树的最长路径,然后再用这个最长路径和变量MAX比较,最终返回MAX代码最大深度var maxDepth = function(root) { if (!root) { re
2022-03-25 15:34:15 573
原创 09二叉搜索子树的最大键值和
二叉搜索子树的最大键值和 (思路还是不太顺)思路判断这颗树是不是二叉搜索树它的左右子树是不是二叉搜索树左右子树加上自己是不是二叉搜索树如果是二叉搜索树,判断结点数之和和最大的值比,获取最大值所以:3. 需要判断它的左右子树是不是儿叉搜索树,所以需要一个值isBST来存储,4. 要判断它是不是二叉搜索树,就要判断根节点的值是否大于左子树的最大值,且小于右子树的最小值,所以还需要存储每棵树的最大值和最小值,max和min (这里想到的是max是递归找到树的最右结点,min是递归找到
2022-03-25 15:25:44 346
原创 08寻找重复的子树
08寻找重复的子树思路知道自己的子树长什么样知道别人的子树长什么样判断自己的子树和别人的子树有没有一样的,有就是有重复的,把对应的根节点push到结果数组中所以:知道自己的子树和别人的子树怎么样要通过后序遍历使用es6中集合的语法,利用集合中键具有唯一性,出现过几次用其值来表示就好, 可以防止结果中多次push相同的子树(如果不采用这种做法,用一个数组来存放已有的序列,这样无法记录它出现过几次,只能判断里面有没有和它相同的,有就push到结果中,结果会出现结果数组中多次push进相同
2022-03-25 15:05:16 303
原创 07序列化与反序列化二叉树
07序列化与反序列化二叉树思路序列化和反序列化二叉树其实是将二叉树转化为字符串,并且字符串再重新转化为二叉树,即树的遍历其可以采用多种遍历方式将树转化为字符串,只需要反序列化的时候用同种遍历方式将字符串转化为树。这里采用的是层次遍历var string = [];var serialize = function(root) { let string = '' if (!root) { return '#' } else {
2022-03-17 20:29:00 499
原创 06后序和中序遍历结果构造⼆叉树
06后序和中序遍历结果构造⼆叉树思路这个的思路和根据前序和中序遍历数组差不多,只是在后序遍历数组中找根节点和左右子树有一点不同,具体到那个数组下标可代入数据判断代码var buildTree = function(inorder, postorder) { return build(postorder,0,postorder.length - 1,inorder,0,inorder.length - 1)};var build = function (postorder,postord
2022-03-14 23:23:03 352
原创 05前序和中序遍历结果构造⼆叉树
05前序和中序遍历结果构造⼆叉树思路首先考虑根节点需要做什么事:需要找到根节点的值并创建节点,利用前序遍历的特点可以知道前序遍历所得数组的第一个值就是根节点。然后来考虑其左右子树的构建根据中序遍历,根节点左右两侧分别为其左右子树,然后左右子树也是树,它的构建和根节点一样,所以构建左右子树也需要找到对应的前序遍历数组和中序遍历数组,所以关键在于如何从现有的两个数组中找到左右子树的前序、中序数组的起始和终止坐标根据中序遍历数组的特点,根据起始坐标到根节点之间节点的数量就是其左子树的大小,这样在前
2022-03-14 23:18:42 337
原创 vue3按需引入Element Plus
使用vite工具引入最开始是使用webpack工具引入,但是按照教程文档还是无法引入,所以使用vite工具包的安装cnpm install -D unplugin-vue-components unplugin-auto-importcnpm install vite-plugin-style-import vite-plugin-components配置文件创建 vite.config.ts文件,插入代码// vite.config.tsimport AutoImport from 'u
2022-03-13 13:56:39 1162
原创 04最大二叉树
04最大二叉树题目题目即根节点为数组中的最大值,数组最大值的左边为根结点的左子树,数组最大值的右边为根结点的右子树,重复此操作每个结点都是这样我的思路如果数组长度为空,则无数据,根节点为空,否则的话找数组中的最大值为根结点,再获取左右两个数组,调用子函数来获取左右结点,重复此操作,但是会出现大段重复代码,其实可以不用使用子函数的,由于函数最终都为将结点return出去,根结点也一样,就是第一个被return出去的结点,所以代码一样,无需使用子函数var constructMaximumBinar
2022-03-12 11:27:59 2298
原创 二叉树展开为链表
二叉树展开为链表思路将左子树、右子树拉直,然后将左子树迁移到右子树,将原先左子树的结点接到拉直后的最后一个顶点,这样最终就是一个链表。这种思路和二叉树的后序遍历很像,先左右子树再访问根结点。(即将左右子树拉直后再对根节点做接入操作)var flatten = function(root) { if (!root) { return null; } else { flattenNode(root);
2022-03-09 21:29:11 203
原创 填充每个节点的下一个右侧节点指针
填充每个节点的下一个右侧节点指针题目自己的思路(错误)以为和前序遍历一样,把对结点的访问改成使得左节点的next指针指向右结点就好,但是这样考虑不全面,会出现相同祖结点,不同父节点的左分支的右孩子不指向右分支的左孩子,中间出现间隙 Tree.prototype.connect = function (root) { if (!root) { return null } else { this.connectNod
2022-03-09 12:13:12 201
原创 翻转二叉树
思路:将每一结点的左右子树进行交换,与先序遍历、后序遍历的思路相同,只是将访问结点的方式改为交换子树注意: 不能使用中序遍历,会出现原先的右子树没有翻转,由于中间翻转会导致将处理好的左节点翻转到右侧,而原先右侧还未翻转的结点被转移到左侧,这样原先右侧的结点一直每被翻转过代码:以先序遍历方式为例TreeNode invertTree(TreeNode root) { // base case if (root == null) { return null; } //访问结点T
2022-03-07 11:15:29 246
原创 搜索框轮播功能
搜索框轮播功能效果不断轮播数据,直到用户点击搜索或完成输入用户搜索时若无输入数据,则以当前轮播数据作为输入值,若有输入数据,则以输入数据作为搜索值思路文字轮播同样采用轮播图的形式(通过绝对定位浮现在输入框的位置,且输入框的层级要比轮播图高,否则会出现输入数据,输入框不显示)用一个变量保存轮播图当前数据,使用轮播图中@change函数,每次轮播的时候报存当前轮播数据,且注意变量初始值为轮播数据首位监听输入框的值,若有值,轮播图隐藏,搜索时判断当前输入框有无值,有值则以它为搜索条件,无值则
2022-03-05 22:01:16 2220
原创 elementui遇到的问题 ——el-dialog
当对话框的“×号”和 取消按钮都想调用同个消息提示关闭函数时,使用@close出现错误问题会出现,你点取消后触发一次消息提示,然后你点确定关闭后,会再次触发对话框的close事件,这样你就会两次有消息提示了。原因由于你点取消的时候出现消息提示后,点击“确定”,即会关闭弹窗,所以会触发@close事件解决方式可以通过这样解决: <el-dialog title="修改摄像头相关信息" :visible="dialogVisi
2021-10-12 16:06:58 2698
原创 elementui遇到的问题 ——el-select
el-select 默认值显示value不显示label问题可能时因为我们传参数进去的value此刻为数字型的,而el-select的value是字符串型的,对应不上,所以无法显示label,只需将传的参数转换为字符型就好newData.type = newData.type.toString(); //将数据里的type转换为字符串,下拉框才可根据这个value显示对应label检测到有值的变化,但是label不显示可能是select组件动态绑定的那个值写的太深了(如绑定到的是computed
2021-10-12 14:19:31 1435
原创 elementui遇到的问题 ——el-table
el-table遇到的问题el-table里设置表格单行样式无效出现问题:将tableRowClassName函数(代码中)的返回值赋给row-class-name;但返回值设置无效,样式不生效解决方法在elementUI中,row-class-name、row-style、cell-class-name等属性要想生效必须使用全局class才能生效。所以可以把想要的样式写在css文件里并引入main.js文件<template> <el-table :data
2021-10-12 14:06:51 443
原创 CSS知识点整理(pink老师课程的学习笔记)
CSS知识点整理CSS简介CSS语法规范代码风格CSS引入方式CSS元素显现方式选择器简单选择器复合选择器字体 文本 背景属性字体属性文本属性背景属性盒子模型浮动定位
2021-02-06 17:30:40 2491
原创 HTML知识点整理(pink老师课程的学习笔记)
HTML知识点整理HTML介绍HTML书写规范HTML常用标签1.HTML介绍Html是用来描述网页(html文件)的一种超文本标记语言。2. HTML书写规范(1)基本规范双标签<> </>;单标签</>标签间有包含和并列关系(2)html骨架标签3.HTML常用标签.补充:路径知识...
2021-02-02 17:23:03 1303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人