1. 进制转换---十进制转32进制
ps:将10进制转化成32进制如下代码所示,同时可以举一反三,如十进制转成16进制,把下列函数中的32改成16即可,只要转成比十大的进制,都可以按下列方法取实现。
//10进制转32进制
function decto32(num){
let res = [];
let yu;
let shang = num;
while(shang >= 32){
yu = Shang % 32
shang = Math.floor(shang / 32)
yu = yu > 9 ? String.fromCharCode(yu + 87) : yu
res.unshift(yu)
}
shang = shang > 9 ? String.fromCharCode(shang + 87) : shang
res.unshift(shang)
return res.join('')
}
let result = decto32(549)
console.log(result) //h5
2. 进制转换---32进制转十进制
ps:下列代码是将32进制转成10进制。也同样可以举一反三,如16进制转成十进制,把下列代码中的32改成16即可,其他比十进制大的进制转成十进制,都可以按下列方法取实现
//32进制转10进制
function to10 (num) {
let sum = 0;
let reg = /^(\d)$/;
num = num.toString().split('')
for(let i = 0; i < num.length; i++){
if(!reg.test(num[i])){
num[i] = num[i].toLowerCase().charCodeAt() - 87
}
num[i] += num[i] * Math.pow(32,num.length - 1 - i)
}
return res
}
let num = 'h5'
console.log(to10(num)) //549
3. 判断相同二叉树
function isSameTree(p,q){
if(p === null && q === null){
return true
}
if(p === null || q === null){
return false
}
if(p.val !== q.val){
return false
}
//分别比对左子树和右子树
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right)
}
4. 二叉树的深度优先遍历
function dfs (root) {
if(!root) {
return
}
dfs(root.left)
dfs(root.right)
}
dfs(tree)
5. 二叉树的广度优先遍历
function bfs (root) {
let res = []
let quene = [root]
if(root === null){
return res
}
while(quene.length !== 0){
let level = []
let len = quene.length
for(let i = 1;i < len; i++){
let node = quene.shift()
level.push(node.val)
if(node.left) quene.push(node.left)
if(node.right) quene.push(node.right)
}
res.push(level)
}
return res
}
bfs(tree)
本文介绍了编程中进行进制转换的方法,包括从十进制转32进制和32进制转十进制的JavaScript实现。此外,还探讨了两种二叉树遍历策略——深度优先遍历(DFS)和广度优先遍历(BFS)的算法实现。
2391

被折叠的 条评论
为什么被折叠?



