ホームページ >バックエンド開発 >PHPチュートリアル >バイナリ ツリーの奇数レベルを反転する
2415。二分木の奇数レベルを反転
難易度: 中
トピック: ツリー、深さ優先検索、幅優先検索、バイナリ ツリー
完璧なバイナリツリーのルートが与えられた場合、ツリーの各奇数レベルでノード値を反転します。
反転したツリーのルートを返します。
すべての親ノードに 2 つの子があり、すべてのリーフが同じレベルにある場合、バイナリ ツリーは完璧です。
ノードのレベルは、ノードとルート ノード間のパスに沿ったエッジの数です。
例 1:
例 2:
例 3:
制約:
ヒント:
解決策:
バイナリ ツリーに対して深さ優先トラバーサルを実行する必要があります。タスクは、奇数レベルのノード値を反転することです。完全な二分木とは、すべての非リーフ ノードに 2 つの子があり、すべてのリーフ ノードが同じレベルにあることを意味します。
DFS (深さ優先検索) アプローチを使用し、奇数レベルごとにノード値を反転します。以下はこれを実現するソリューションです。
このソリューションを PHP で実装してみましょう: 2415。二分木の奇数レベルを反転
<?php class TreeNode { public $val = 0; public $left = null; public $right = null; public function __construct($val = 0, $left = null, $right = null) { $this->val = $val; $this->left = $left; $this->right = $right; } } class Solution { /** * @param TreeNode $root * @return TreeNode */ public function reverseOddLevels($root) { ... ... ... /** * go to ./solution.php */ } /** * Helper function to perform DFS * * @param $left * @param $right * @param $isOddLevel * @return void */ private function dfs($left, $right, $isOddLevel) { ... ... ... /** * go to ./solution.php */ } } // Example usage: $root = new TreeNode(2); $root->left = new TreeNode(3); $root->right = new TreeNode(5); $root->left->left = new TreeNode(8); $root->left->right = new TreeNode(13); $root->right->left = new TreeNode(21); $root->right->right = new TreeNode(34); $solution = new Solution(); $reversedRoot = $solution->reverseOddLevels($root); // Function to print the tree for testing function printTree($root) { if ($root === null) { return; } echo $root->val . " "; printTree($root->left); printTree($root->right); } printTree($reversedRoot); // Output: 2 5 3 8 13 21 34 ?>
例 1:
入力:
2 / \ 3 5 / \ / \ 8 13 21 34
出力:
2 / \ 5 3 / \ / \ 8 13 21 34
例 2:
入力:
7 / \ 13 11
出力:
7 / \ 11 13
このソリューションは、時間計算量 O(n) の深さ優先探索を使用して、完全なバイナリ ツリーの奇数レベルにあるノードを効率的に反転します。このコードは奇数レベルで値を交換し、再帰的アプローチを使用してツリーを処理します。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上がバイナリ ツリーの奇数レベルを反転するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。