この解答例はChatGPTによって生成されています,正しいかは自己判断で。
BFE.devでのAI解答例 - JavaScript コーディング問題
137. 二分木を縦で巡回する
以下はJavaScriptによる一例です。
// 二分木の各ノードを表すクラス
class Node {
constructor(value, left = null, right = null) {
this.value = value;
this.left = left;
this.right = right;
}
}
// 二分木を縦で巡回する関数
function traverseVertical(root) {
// 巡回結果を格納する配列
const result = [];
// 各深さのノードを格納する2次元配列
const levels = [];
// 根を最初にレベル0に追加
levels[0] = [root];
// 2次元配列を作成する
for (let i = 0; i < levels.length; i++) {
const currentLevel = levels[i];
const nextLevel = [];
for (let j = 0; j < currentLevel.length; j++) {
const node = currentLevel[j];
if (node.left) nextLevel.push(node.left);
if (node.right) nextLevel.push(node.right);
}
if (nextLevel.length > 0) {
levels.push(nextLevel);
}
}
// 配列の各要素を、上から下、左から右の順で巡回する
for (let i = 0; i < levels.length; i++) {
for (let j = 0; j < levels[i].length; j++) {
result.push(levels[i][j].value);
}
}
return result;
}
// テスト用の二分木を作成する
const tree = new Node(
6,
new Node(4, new Node(2, new Node(1), new Node(3)), new Node(7)),
new Node(9, new Node(10), new Node(8, new Node(5)))
);
// 二分木を縦で巡回する
const result = traverseVertical(tree);
// 結果を表示する
console.log(result); // [6, 4, 2, 7, 1, 9, 10, 3, 8, 5]
このコードでは、与えられた二分木を上から下、左から右の順で配列に格納しています。まず、二分木の各深さにあるノードを2次元配列に格納して、それを上から下の順で巡回して、各ノードの値を結果配列に追加します。