课程名称:JavaScript版数据结构与算法
课程章节:第3章 数据结构之“栈”
主讲老师:lewis
课程内容:
今天学习的内容包括:
3-4 前端与栈:JS 中的函数调用堆栈——函数的琏式调用就是一个堆栈的过程。
3-5 LeetCode:144. 二叉树的前序遍历——使用迭代模式实现二叉树前序遍历。
3-6 栈-章节总结——js中使用Array实现栈的所有功能,push,pop,stack[stack.length-1]。
3-7 【勤于思考,夯实学习成果】阶段思考题——封装stack和十进制转二进制写法。
课程收获:
查看在vscode中debugger琏式调用函数堆栈的过程
const func1 = () => {
func2()
}
const func2 = () => {
func3()
}
const func3 = () => {}
func1()
使用迭代模式实现二叉树前序遍历
1、使用while进行循环,迭代模式实现
/**
* @param {TreeNode} root
* @return {number[]}
*/
var preorderTraversal = function(root) {
const res = []
const stack = []
if(root) stack.push(root)
while(stack.length){
const n = stack.pop()
res.push(n.val)
if(n.right) stack.push(n.right)
if(n.left) stack.push(n.left)
}
return res
};
虽然实现了,但是没太理解😭
阶段思考学习:
1、封装一个 Stack 类
class Stack {
constructor() {
this.stack = []
}
push(root){
this.stack.push(root)
}
pop(){
return this.stack.pop()
}
peek(){
return this.stack[this.stack.length - 1]
}
}
const stack = new Stack()
stack.push('a')
stack.push('b')
stack.push('c')
stack.push('d')
console.log(stack.pop())
console.log(stack.pop())
console.log(stack.pop())
console.log(stack.pop())
2、对 100 进行十进制数字转为二进制
let Dec2bin = (data) => {
const stack = []
let n = data
if(n === 0) return 0
while(n > 0){
stack.push(n % 2)
n = Math.floor(n / 2)
}
let str = ''
while (stack.length){
str += stack.pop()
}
return str
}
console.log(Dec2bin(100))
console.log(Dec2bin(10))
貌似懂了😈,算法很有魅力,还是要先过一遍,然后多学几遍,对以后编程应该哟很大的帮助,改变编程思维,优化代码流程。加油😀
坚持打卡,坚持学习!明天见💪~