ホームページ >バックエンド開発 >PHPチュートリアル >サブツリー削除クエリ後のバイナリ ツリーの高さ
2458。サブツリー削除クエリ後のバイナリ ツリーの高さ
難易度: 難しい
トピック: 配列、ツリー、深さ優先検索、幅優先検索、バイナリ ツリー
n 個のノードを持つバイナリーツリーのルートが与えられます。各ノードには 1 から n までの一意の値が割り当てられます。サイズ m の配列クエリも与えられます。
ツリー上で m 個の 独立した クエリを実行する必要があります。i 番目 のクエリでは次の処理を実行します。
サイズ m の配列の回答を返します。ここで、answer[i] は、i番目のクエリを実行した後のツリーの高さです。
注:
例 1:
例 2:
制約:
ヒント:
解決策:
このソリューションでは、2 パスのアプローチが採用されています。
このソリューションを PHP で実装してみましょう: 2458。サブツリー削除クエリ後のバイナリ ツリーの高さ
1.クラス定義とプロパティ:
class Solution { private $valToMaxHeight = []; private $valToHeight = [];
2.メイン関数:
function treeQueries($root, $queries) { ... ... ... /** * go to ./solution.php */ }
3.身長の計算:
private function height($node) { ... ... ... /** * go to ./solution.php */ }
4.最大高さの深さ優先検索:
private function dfs($node, $depth, $maxHeight) { ... ... ... /** * go to ./solution.php */ }
例を段階的に見てみましょう。
入力例:
// Tree Structure // 1 // / \ // 3 4 // / / \ // 2 6 5 // \ // 7 $root = [1, 3, 4, 2, null, 6, 5, null, null, null, null, null, 7]; $queries = [4];
初期高さ計算:
高さの計算後、valToHeight は次のようになります:
class Solution { private $valToMaxHeight = []; private $valToHeight = [];
最大高さの DFS:
クエリ後の結果配列:
指定された入力の結果は次のようになります:
function treeQueries($root, $queries) { ... ... ... /** * go to ./solution.php */ }
この構造化されたアプローチにより、必要な高さを効率的に計算し、最初の前処理後に一定時間内に各クエリに答えることが保証されます。全体的な複雑さは O(n m) です。n はツリー内のノードの数、 です。 m はクエリの数です。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上がサブツリー削除クエリ後のバイナリ ツリーの高さの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。