没有合适的资源?快使用搜索试试~ 我知道了~
leetcode刷题笔记之JavaScript
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 139 浏览量
2023-11-08
18:10:45
上传
评论
收藏 13.42MB PDF 举报
温馨提示
试读
329页
资源leetcode刷题笔记之JavaScript知识分享
资源推荐
资源详情
资源评论
leetcode刷题笔记(JavaScript)
目录
leetcode刷题笔记(JavaScript) 1
第1篇 LeetCode二叉树:递归遍历&&迭代遍历&&层序遍历 2
第2篇 【LeetCode】二分基础模板,查找左右边界 7
第3篇 【LeetCode】二分基本问题题解汇总 18
第4篇 【LeetCode】在非有序数组中使用二分 31
第5篇 【LeetCode】在范围内二分查找一个整数 39
第6篇 【LeetCode】每一轮都要把输入数组看一遍的二分 47
第7篇 【LeetCode】二分查找题解汇总 51
第8篇 【LeetCode】双指针题解汇总 53
第9篇 【LeetCode】图解 904. 水果成篮 69
第10篇 【LeetCode】滑动窗口题解汇总 78
第11篇 【LeetCode】矩阵模拟相关题目汇总 95
第12篇 【LeetCode】链表题解汇总 106
第13篇 【LeetCode】41. 缺失的第一个正数 157
第14篇 【LeetCode】哈希表题解汇总 159
第15篇 图解kmp算法 177
第16篇 【LeetCode】栈与单调栈题解汇总 186
第17篇 【LeetCode】二叉树相关题解汇总 212
第18篇 【LeetCode】二叉搜索树相关题解汇总 256
第19篇 【LeetCode】回溯题解汇总 281
第20篇 JS数组解构赋值变量存在依赖关系 326
第1篇 LeetCode二叉树:递归遍历&&迭代遍历&&层序
遍历
LeetCode二叉树:递归遍历&&迭代遍历&&层序遍历
递归遍历
前序遍历
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var preorderTraversal = function(root) {
res let = []
const dfs = function(root) {
root if( === null) {
return;
}
//
res root val.push( . )
//
root leftdfs( . )
//
root rightdfs( . )
}
rootdfs( )
resreturn
};
中序遍历
var inorderTraversal = function(root) {
res let = []
const dfs = function(root) {
root if( === null) {
return;
}
root leftdfs( . )
res root val.push( . )
第1篇 LeetCode二叉树:递归遍历&&迭代遍历&&层序遍历
第 1 页 /共
327 页
root rightdfs( . )
}
rootdfs( )
resreturn
};
后序遍历
var postorderTraversal = function(root) {
res let = []
const dfs = function(root) {
root if( === null) {
return;
}
root leftdfs( . )
root rightdfs( . )
res root val.push( . )
}
rootdfs( )
resreturn
};
迭代遍历Ⅰ
前序遍历是中左右,每次先处理的是中间节点,那么先将根节点放入栈中,然后将右孩子加入
栈,再加入左孩子。
为什么要先加入 右孩子,再加入左孩子呢? 因为这样出栈的时候才是中左右的顺序。
前序遍历
var preorderTraversal = function(root) {
res let = []
//{return;}dfs
root if( === null){
resreturn
}
cur let = null
stack rootconst = [ ]
stack length while( . ) {
cur stack= .pop()
res cur val.push( . )
cur right stack cur right. && .push( . )
cur left stack cur left. && .push( . )
}
resreturn
};
第1篇 LeetCode二叉树:递归遍历&&迭代遍历&&层序遍历
第 2 页 /共
327 页
后序遍历
先序遍历是 中左右 --> 调整代码左右顺序:中右左 --> 翻转result数组:左右中
后序遍历:左右中
var postorderTraversal = function(root) {
res let = []
root if( === null) {
resreturn
}
stack rootconst = [ ]
cur let = null
stack length while( . ) {
cur stack= .pop()
res cur val.push( . )
cur left stack cur left. && .push( . )
cur right stack cur right . && .push( . )
}
resreturn .reverse()
};
中序遍历
中序遍历是左中右,先访问的是二叉树顶部的节点,然后一层一层向下访问,直到到达树左
面的最底部,再开始处理节点(也就是在把节点的数值放进result数组中)
处理顺序和访问顺序是不一致的。
在使用迭代法写中序遍历,就需要借用指针的遍历来帮助访问节点,栈则用来处理节点上的
元素。
var inorderTraversal = function(root) {
res let = []
root if( === null) {
resreturn
}
stack const = []
cur rootlet =
stack length cur while( . || ) {
cur if( ) {
stack cur.push( )
cur cur left = . //
} else {
cur stack = .pop() //
res cur val.push( . )
cur cur right = . //
}
}
resreturn
};
迭代遍历Ⅱ
这里的迭代遍历是统一迭代,因为前面的代码无法通过改一两行代码实现中序遍历
第1篇 LeetCode二叉树:递归遍历&&迭代遍历&&层序遍历
第 3 页 /共
327 页
剩余328页未读,继续阅读
资源评论
北极象
- 粉丝: 1w+
- 资源: 345
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功