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