Leetcode-フリップ同等のバイナリツリー

私たちは次のように、バイナリツリーTの反転動作を定義することができます任意のノードを選択し、その左部分木と右のサブツリーを交換します。

一定回数、XがYに等しいようにする限り、操作を反転した後、我々はXバイナリツリー、バイナリツリーは、Yをひっくり返すと同等です呼び出します

バイナリツリーは2個のフリップフロッ同等の機能かどうかが判断される書き込み。これらは、ツリーのルートとROOT1のroot2によって与えられています。

 

例:

入力:ROOT1 = [1,2,3,4,5,6、NULL、 NULL、NULL、7,8]、root2 = [1,3,2、NULL、6,4,5、NULL、NULL、NULL 、NULL、8,7]
出力:真の
説明:我々は、値1を有するノードで反転 、3、および5。

 

ヒント:

各ツリー100個のノードの最大値を有します。
各ツリーの各値は、範囲[0、99]の整数で、ユニークです。
 

出典:ボタン(LeetCode)に滞在
します。https://leetcode-cn.com/problems/flip-equivalent-binary-treesリンク
すべてのネットワークからの控除が著作権を保有します。商業転載は許可公式、非商用の転載は、ソースを明記してくださいお問い合わせください。

 

/ **
 *バイナリツリーノードの定義。
 *公共のクラスのTreeNode {
 * int型のval;
 *のTreeNodeは左。
 *ツリーノードを右。
 *ツリーノード(INT X){ヴァル= X。}
 *}
 * /


クラスソリューション{
     パブリック ブールflipEquiv(ツリーノードROOT1、ツリーノードroot2){
              
        ブール K = ; = チェック(ROOT1、root2)。
        戻る権利を。
    } 
   
    
     パブリック  ブールチェック(TreeNodeのROOT1、TreeNodeのroot2)
    {    
        
     もし(ROOT1 == nullの && root2 == nullの
        {
            返す ;
        }
        もし(ROOT1!= nullの && root2!= nullの
        {
            もし(root1.val!= root2.val)
            {
                返す ;
            }
            
            {
                
                リターン(チェック(root1.left、root2.left)&& チェック(root1.right、root2.right))
                     || (チェック(root1.left、root2.right)&& チェック(root1.right、root2.left))。

            }
        }
        
        {
            返す ;
        }

      }
}

 

おすすめ

転載: www.cnblogs.com/dingpeng9055/p/11721724.html