この解答例は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次元配列に格納して、それを上から下の順で巡回して、各ノードの値を結果配列に追加します。