根据传入的值 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 叉树
- 输入的别太大,否则很容易
爆了