|
| 1 | +const input = require('fs') |
| 2 | + .readFileSync(process.platform === 'linux' ? '/dev/stdin' : './input.txt') |
| 3 | + .toString() |
| 4 | + .trim() |
| 5 | + .split('\n'); |
| 6 | + |
| 7 | +function solution(input) { |
| 8 | + const n = input[0]; |
| 9 | + const arr = input.slice(1); |
| 10 | + |
| 11 | + const 인접리스트 = {}; |
| 12 | + |
| 13 | + for (let i = 0; i < n; i++) { |
| 14 | + const [node, left, right] = arr[i].split(' '); |
| 15 | + 인접리스트[node] = [left, right]; |
| 16 | + } |
| 17 | + |
| 18 | + let preOrderResult = ''; |
| 19 | + function preOrder(node) { |
| 20 | + if (node === '.' || !node) return; |
| 21 | + preOrderResult += node; |
| 22 | + preOrder(인접리스트[node][0]); |
| 23 | + preOrder(인접리스트[node][1]); |
| 24 | + } |
| 25 | + |
| 26 | + let inOrderResult = ''; |
| 27 | + function inOrder(node) { |
| 28 | + if (node === '.' || !node) return; |
| 29 | + inOrder(인접리스트[node][0]); |
| 30 | + inOrderResult += node; |
| 31 | + inOrder(인접리스트[node][1]); |
| 32 | + } |
| 33 | + |
| 34 | + let postOrderResult = ''; |
| 35 | + function postOrder(node) { |
| 36 | + if (node === '.' || !node) return; |
| 37 | + postOrder(인접리스트[node][0]); |
| 38 | + postOrder(인접리스트[node][1]); |
| 39 | + postOrderResult += node; |
| 40 | + } |
| 41 | + |
| 42 | + preOrder('A'); |
| 43 | + inOrder('A'); |
| 44 | + postOrder('A'); |
| 45 | + |
| 46 | + return [preOrderResult, inOrderResult, postOrderResult].join('\n'); |
| 47 | +} |
| 48 | + |
| 49 | +console.log(solution(input)); |
0 commit comments