根据传入的值 n,生成所有小于 n 的二进制
#二叉树
目录
1. 分析:转化成多叉树遍历
问题
- 二进制,就是
二叉树
嘛 - 十进制,就是
十叉树
嘛 - 这其实是一个
回溯算法
,所以前后序位置,放到for 循环
里面- 然后,在前后序位置,做
选择
或者撤销选择
- 然后,在前后序位置,做
2. 代码:使用回溯算法框架
实现
function generateBinaray(n) {
const res = [];
const path = [];
function backtrack(n) {
if (n === 0) {
res.push(path.join(""));
return;
}
// 二进制,所以这里是 0 和 1, 即 i < 2 即可
for (let i = 0; i < 2; i++) {
// 选择
path.push(i);
backtrack(n - 1);
// 取消选择
path.pop();
}
}
backtrack(n);
console.log(res);
return res;
}
generateBinaray(3);
generateBinaray(10);
- 满足条件时,一定要深拷贝,一定要深拷贝,一定要深拷贝
- 需要生成其他进制的数,更改
for 循环
的里的数即可,即多叉数
**对应多少进制
二进制
对应2 叉树
十进制
对应10 叉树
八进制
对应8 叉树
- 输入的别太大,否则很容易
爆了