Fix the indentation of JS and TS code.

pull/495/head
krahets 2 years ago
parent 541f384e7c
commit 649d8c4c86

@ -9,25 +9,25 @@ const { printTree } = require('../modules/PrintUtil');
/* 前序遍历:例题一 */ /* 前序遍历:例题一 */
function preOrder(root, res) { function preOrder(root, res) {
if (root === null) { if (root === null) {
return; return;
} }
if (root.val === 7) { if (root.val === 7) {
// 记录解 // 记录解
res.push(root); res.push(root);
} }
preOrder(root.left, res); preOrder(root.left, res);
preOrder(root.right, res); preOrder(root.right, res);
} }
// Driver Code // Driver Code
const root = arrToTree([1, 7, 3, 4, 5, 6, 7]); const root = arrToTree([1, 7, 3, 4, 5, 6, 7]);
console.log("\n初始化二叉树"); console.log('\n初始化二叉树');
printTree(root); printTree(root);
// 前序遍历 // 前序遍历
const res = []; const res = [];
preOrder(root, res); preOrder(root, res);
console.log("\n输出所有值为 7 的节点"); console.log('\n输出所有值为 7 的节点');
console.log(res.map(node => node.val)); console.log(res.map((node) => node.val));

@ -9,24 +9,24 @@ const { printTree } = require('../modules/PrintUtil');
/* 前序遍历:例题二 */ /* 前序遍历:例题二 */
function preOrder(root, path, res) { function preOrder(root, path, res) {
if (root === null) { if (root === null) {
return; return;
} }
// 尝试 // 尝试
path.push(root); path.push(root);
if (root.val === 7) { if (root.val === 7) {
// 记录解 // 记录解
res.push([...path]); res.push([...path]);
} }
preOrder(root.left, path, res); preOrder(root.left, path, res);
preOrder(root.right, path, res); preOrder(root.right, path, res);
// 回退 // 回退
path.pop(); path.pop();
} }
// Driver Code // Driver Code
const root = arrToTree([1, 7, 3, 4, 5, 6, 7]); const root = arrToTree([1, 7, 3, 4, 5, 6, 7]);
console.log("\n初始化二叉树"); console.log('\n初始化二叉树');
printTree(root); printTree(root);
// 前序遍历 // 前序遍历
@ -34,7 +34,7 @@ const path = [];
const res = []; const res = [];
preOrder(root, path, res); preOrder(root, path, res);
console.log("\n输出所有根节点到节点 7 的路径"); console.log('\n输出所有根节点到节点 7 的路径');
res.forEach(path => { res.forEach((path) => {
console.log(path.map(node => node.val)); console.log(path.map((node) => node.val));
}); });

@ -9,25 +9,25 @@ const { printTree } = require('../modules/PrintUtil');
/* 前序遍历:例题三 */ /* 前序遍历:例题三 */
function preOrder(root, path, res) { function preOrder(root, path, res) {
// 剪枝 // 剪枝
if (root === null || root.val === 3) { if (root === null || root.val === 3) {
return; return;
} }
// 尝试 // 尝试
path.push(root); path.push(root);
if (root.val === 7) { if (root.val === 7) {
// 记录解 // 记录解
res.push([...path]); res.push([...path]);
} }
preOrder(root.left, path, res); preOrder(root.left, path, res);
preOrder(root.right, path, res); preOrder(root.right, path, res);
// 回退 // 回退
path.pop(); path.pop();
} }
// Driver Code // Driver Code
const root = arrToTree([1, 7, 3, 4, 5, 6, 7]); const root = arrToTree([1, 7, 3, 4, 5, 6, 7]);
console.log("\n初始化二叉树"); console.log('\n初始化二叉树');
printTree(root); printTree(root);
// 前序遍历 // 前序遍历
@ -35,7 +35,7 @@ const path = [];
const res = []; const res = [];
preOrder(root, path, res); preOrder(root, path, res);
console.log("\n输出所有根节点到节点 7 的路径,且路径中不包含值为 3 的节点"); console.log('\n输出所有根节点到节点 7 的路径,且路径中不包含值为 3 的节点');
res.forEach(path => { res.forEach((path) => {
console.log(path.map(node => node.val)); console.log(path.map((node) => node.val));
}); });

@ -9,61 +9,61 @@ const { printTree } = require('../modules/PrintUtil');
/* 判断当前状态是否为解 */ /* 判断当前状态是否为解 */
function isSolution(state) { function isSolution(state) {
return state && state[state.length - 1]?.val === 7; return state && state[state.length - 1]?.val === 7;
} }
/* 记录解 */ /* 记录解 */
function recordSolution(state, res) { function recordSolution(state, res) {
res.push([...state]); res.push([...state]);
} }
/* 判断在当前状态下,该选择是否合法 */ /* 判断在当前状态下,该选择是否合法 */
function isValid(state, choice) { function isValid(state, choice) {
return choice !== null && choice.val !== 3; return choice !== null && choice.val !== 3;
} }
/* 更新状态 */ /* 更新状态 */
function makeChoice(state, choice) { function makeChoice(state, choice) {
state.push(choice); state.push(choice);
} }
/* 恢复状态 */ /* 恢复状态 */
function undoChoice(state) { function undoChoice(state) {
state.pop(); state.pop();
} }
/* 回溯算法:例题三 */ /* 回溯算法:例题三 */
function backtrack(state, choices, res) { function backtrack(state, choices, res) {
// 检查是否为解 // 检查是否为解
if (isSolution(state)) { if (isSolution(state)) {
// 记录解 // 记录解
recordSolution(state, res); recordSolution(state, res);
return; return;
} }
// 遍历所有选择 // 遍历所有选择
for (const choice of choices) { for (const choice of choices) {
// 剪枝:检查选择是否合法 // 剪枝:检查选择是否合法
if (isValid(state, choice)) { if (isValid(state, choice)) {
// 尝试:做出选择,更新状态 // 尝试:做出选择,更新状态
makeChoice(state, choice); makeChoice(state, choice);
// 进行下一轮选择 // 进行下一轮选择
backtrack(state, [choice.left, choice.right], res); backtrack(state, [choice.left, choice.right], res);
// 回退:撤销选择,恢复到之前的状态 // 回退:撤销选择,恢复到之前的状态
undoChoice(state); undoChoice(state);
}
} }
}
} }
// Driver Code // Driver Code
const root = arrToTree([1, 7, 3, 4, 5, 6, 7]); const root = arrToTree([1, 7, 3, 4, 5, 6, 7]);
console.log("\n初始化二叉树"); console.log('\n初始化二叉树');
printTree(root); printTree(root);
// 回溯算法 // 回溯算法
const res = []; const res = [];
backtrack([], [root], res); backtrack([], [root], res);
console.log("\n输出所有根节点到节点 7 的路径,要求路径中不包含值为 3 的节点"); console.log('\n输出所有根节点到节点 7 的路径,要求路径中不包含值为 3 的节点');
res.forEach(path => { res.forEach((path) => {
console.log(path.map(node => node.val)); console.log(path.map((node) => node.val));
}); });

@ -10,25 +10,27 @@ import { printTree } from '../modules/PrintUtil';
/* 前序遍历:例题一 */ /* 前序遍历:例题一 */
function preOrder(root: TreeNode | null, res: TreeNode[]): void { function preOrder(root: TreeNode | null, res: TreeNode[]): void {
if (root === null) { if (root === null) {
return; return;
} }
if (root.val === 7) { if (root.val === 7) {
// 记录解 // 记录解
res.push(root); res.push(root);
} }
preOrder(root.left, res); preOrder(root.left, res);
preOrder(root.right, res); preOrder(root.right, res);
} }
// Driver Code // Driver Code
const root = arrToTree([1, 7, 3, 4, 5, 6, 7]); const root = arrToTree([1, 7, 3, 4, 5, 6, 7]);
console.log("\n初始化二叉树"); console.log('\n初始化二叉树');
printTree(root); printTree(root);
// 前序遍历 // 前序遍历
const res: TreeNode[] = []; const res: TreeNode[] = [];
preOrder(root, res); preOrder(root, res);
console.log("\n输出所有值为 7 的节点"); console.log('\n输出所有值为 7 的节点');
console.log(res.map(node => node.val)); console.log(res.map((node) => node.val));
export {};

@ -9,25 +9,29 @@ import { arrToTree } from '../modules/TreeNode';
import { printTree } from '../modules/PrintUtil'; import { printTree } from '../modules/PrintUtil';
/* 前序遍历:例题二 */ /* 前序遍历:例题二 */
function preOrder(root: TreeNode | null, path: TreeNode[], res: TreeNode[][]): void { function preOrder(
if (root === null) { root: TreeNode | null,
return; path: TreeNode[],
} res: TreeNode[][]
// 尝试 ): void {
path.push(root); if (root === null) {
if (root.val === 7) { return;
// 记录解 }
res.push([...path]); // 尝试
} path.push(root);
preOrder(root.left, path, res); if (root.val === 7) {
preOrder(root.right, path, res); // 记录解
// 回退 res.push([...path]);
path.pop(); }
preOrder(root.left, path, res);
preOrder(root.right, path, res);
// 回退
path.pop();
} }
// Driver Code // Driver Code
const root = arrToTree([1, 7, 3, 4, 5, 6, 7]); const root = arrToTree([1, 7, 3, 4, 5, 6, 7]);
console.log("\n初始化二叉树"); console.log('\n初始化二叉树');
printTree(root); printTree(root);
// 前序遍历 // 前序遍历
@ -35,7 +39,9 @@ const path: TreeNode[] = [];
const res: TreeNode[][] = []; const res: TreeNode[][] = [];
preOrder(root, path, res); preOrder(root, path, res);
console.log("\n输出所有根节点到节点 7 的路径"); console.log('\n输出所有根节点到节点 7 的路径');
res.forEach(path => { res.forEach((path) => {
console.log(path.map(node => node.val)); console.log(path.map((node) => node.val));
}); });
export {};

@ -9,26 +9,30 @@ import { arrToTree } from '../modules/TreeNode';
import { printTree } from '../modules/PrintUtil'; import { printTree } from '../modules/PrintUtil';
/* 前序遍历:例题三 */ /* 前序遍历:例题三 */
function preOrder(root: TreeNode | null, path: TreeNode[], res: TreeNode[][]): void { function preOrder(
// 剪枝 root: TreeNode | null,
if (root === null || root.val === 3) { path: TreeNode[],
return; res: TreeNode[][]
} ): void {
// 尝试 // 剪枝
path.push(root); if (root === null || root.val === 3) {
if (root.val === 7) { return;
// 记录解 }
res.push([...path]); // 尝试
} path.push(root);
preOrder(root.left, path, res); if (root.val === 7) {
preOrder(root.right, path, res); // 记录解
// 回退 res.push([...path]);
path.pop(); }
preOrder(root.left, path, res);
preOrder(root.right, path, res);
// 回退
path.pop();
} }
// Driver Code // Driver Code
const root = arrToTree([1, 7, 3, 4, 5, 6, 7]); const root = arrToTree([1, 7, 3, 4, 5, 6, 7]);
console.log("\n初始化二叉树"); console.log('\n初始化二叉树');
printTree(root); printTree(root);
// 前序遍历 // 前序遍历
@ -36,7 +40,9 @@ const path: TreeNode[] = [];
const res: TreeNode[][] = []; const res: TreeNode[][] = [];
preOrder(root, path, res); preOrder(root, path, res);
console.log("\n输出所有根节点到节点 7 的路径,且路径中不包含值为 3 的节点"); console.log('\n输出所有根节点到节点 7 的路径,且路径中不包含值为 3 的节点');
res.forEach(path => { res.forEach((path) => {
console.log(path.map(node => node.val)); console.log(path.map((node) => node.val));
}); });
export {};

@ -10,61 +10,67 @@ import { printTree } from '../modules/PrintUtil';
/* 判断当前状态是否为解 */ /* 判断当前状态是否为解 */
function isSolution(state: TreeNode[]): boolean { function isSolution(state: TreeNode[]): boolean {
return state && state[state.length - 1]?.val === 7; return state && state[state.length - 1]?.val === 7;
} }
/* 记录解 */ /* 记录解 */
function recordSolution(state: TreeNode[], res: TreeNode[][]): void { function recordSolution(state: TreeNode[], res: TreeNode[][]): void {
res.push([...state]); res.push([...state]);
} }
/* 判断在当前状态下,该选择是否合法 */ /* 判断在当前状态下,该选择是否合法 */
function isValid(state: TreeNode[], choice: TreeNode): boolean { function isValid(state: TreeNode[], choice: TreeNode): boolean {
return choice !== null && choice.val !== 3; return choice !== null && choice.val !== 3;
} }
/* 更新状态 */ /* 更新状态 */
function makeChoice(state: TreeNode[], choice: TreeNode): void { function makeChoice(state: TreeNode[], choice: TreeNode): void {
state.push(choice); state.push(choice);
} }
/* 恢复状态 */ /* 恢复状态 */
function undoChoice(state: TreeNode[]): void { function undoChoice(state: TreeNode[]): void {
state.pop(); state.pop();
} }
/* 回溯算法:例题三 */ /* 回溯算法:例题三 */
function backtrack(state: TreeNode[], choices: TreeNode[], res: TreeNode[][]): void { function backtrack(
// 检查是否为解 state: TreeNode[],
if (isSolution(state)) { choices: TreeNode[],
// 记录解 res: TreeNode[][]
recordSolution(state, res); ): void {
return; // 检查是否为解
} if (isSolution(state)) {
// 遍历所有选择 // 记录解
for (const choice of choices) { recordSolution(state, res);
// 剪枝:检查选择是否合法 return;
if (isValid(state, choice)) { }
// 尝试:做出选择,更新状态 // 遍历所有选择
makeChoice(state, choice); for (const choice of choices) {
// 进行下一轮选择 // 剪枝:检查选择是否合法
backtrack(state, [choice.left, choice.right], res); if (isValid(state, choice)) {
// 回退:撤销选择,恢复到之前的状态 // 尝试:做出选择,更新状态
undoChoice(state); makeChoice(state, choice);
// 进行下一轮选择
backtrack(state, [choice.left, choice.right], res);
// 回退:撤销选择,恢复到之前的状态
undoChoice(state);
}
} }
}
} }
// Driver Code // Driver Code
const root = arrToTree([1, 7, 3, 4, 5, 6, 7]); const root = arrToTree([1, 7, 3, 4, 5, 6, 7]);
console.log("\n初始化二叉树"); console.log('\n初始化二叉树');
printTree(root); printTree(root);
// 回溯算法 // 回溯算法
const res: TreeNode[][] = []; const res: TreeNode[][] = [];
backtrack([], [root], res); backtrack([], [root], res);
console.log("\n输出所有根节点到节点 7 的路径,要求路径中不包含值为 3 的节点"); console.log('\n输出所有根节点到节点 7 的路径,要求路径中不包含值为 3 的节点');
res.forEach(path => { res.forEach((path) => {
console.log(path.map(node => node.val)); console.log(path.map((node) => node.val));
}); });
export {};

Loading…
Cancel
Save