DFS 与 BFS
dfs 递归 本质通过栈结构
bfs 层序遍历 通过队列结构
function permute(nums) {
let res = [];
let cur = []; // 记录当前内容
let visted = {
}; //记录访问过的节点
let len = nums.length;
function dfs(nth) {
//递归终止条件
if (nth === len) {
res.push([...cur]);
return ;
}
//检查还有哪些数字可以使用
for (let i = 0; i < len; i++) {
if (!visted[i]) {
//记录访问过的节点
visted[i] = true;
cur.push(nums[i]);
//递归
dfs(nth + 1);
//回溯
cur.pop();
visted[i] = false;
}
}
}
dfs(0);
return res;
}
//广度优先搜索
function bfs(root) {
let queue = [];
//观察的当前节点入队
queue.push(root);
//当队列还有元素说明还没有遍历完
while (queue.length) {
//头节点出队
let cur = queue.shift();
//访问头节点
console.log(cur.val);
if (cur.left) queue.push(cur.left);
if (cur.right) queue.push(cur.right);
}
全排列
组合问题
二叉树遍历
先序遍历的迭代
var preorderTraversal = function(root) {
let stk=[]