951。等価な二分木を反転
難易度: 中
トピック: ツリー、深さ優先検索、バイナリ ツリー
バイナリ ツリー T の場合、次のように 反転操作 を定義できます。任意のノードを選択し、左右の子サブツリーを交換します。
二分木 X は、X を Y と反転同等です。いくつかの反転操作の後、🎜>Y。
2 つのバイナリ ツリー root1 と root2 のルートを指定すると、2 つのツリーが反転等価であればtrue を返し、それ以外の場合は falseを返します。
例 1:
例 2:
例 3:
制約:
解決策:
再帰的深さ優先検索 (DFS) を使用できます。考え方としては、2 つのツリーのルート値が同じで、サブツリーが (反転なしで) 同じであるか、いくつかのノードで左右の子を反転した後に同じになる場合、2 つのツリーは反転同等であるということです。プラン:
基本ケース:
再帰的なケース:
951。等価な二分木を反転
<?php // Definition for a binary tree node. class TreeNode { public $val; public $left; public $right; function __construct($val = 0, $left = null, $right = null) { $this->val = $val; $this->left = $left; $this->right = $right; } } /** * @param TreeNode $root1 * @param TreeNode $root2 * @return Boolean */ function flipEquiv($root1, $root2) { ... ... ... /** * go to ./solution.php */ } // Example usage: $root1 = new TreeNode(1, new TreeNode(2, new TreeNode(4), new TreeNode(5, new TreeNode(7), new TreeNode(8))), new TreeNode(3, new TreeNode(6), null) ); $root2 = new TreeNode(1, new TreeNode(3, null, new TreeNode(6)), new TreeNode(2, new TreeNode(4), new TreeNode(5, new TreeNode(8), new TreeNode(7))) ); var_dump(flipEquiv($root1, $root2)); // Output: bool(true) ?>
TreeNode クラス: TreeNode クラスは、ノードの値、左の子、右の子を初期化するコンストラクターを備えたバイナリ ツリー内のノードを表します。
flipEquiv 関数:
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上が。等価な二分木を反転するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。