101タイトル:対称バイナリツリー

A. 問題の説明

それは鏡面対称である場合には、バイナリツリーを考えると、確認してください。

例えば、二分木[1,2,2,3,4,4,3]は対称です。

     1

    / \

  2 2

 / \ / \

3 4 4 3

ただし、以下の[1,2,2-、ヌル、3、ヌル、3]ない鏡像です。

    1

   / \

  2 2

   \ \

   3 3

II。問題解決のためのアイデア

タイトルのアイデア:+再帰深度検索要素、それを解決する方法。

再帰関数(ノード1つのP、ノード2 Q):ステップ。ノードp及びqの値を比較して同一です。

ステップ2:等しい、再帰的に、P-右サブツリー左サブツリー及びQ組み合わせ再帰再帰関数は、ステップの繰り返し、関数再帰的に組み合わせてpとqのサブツリー右サブツリーを左。

ステップ3:真のすべてのリターン、最終リターンがtrueの場合、そうでない場合はfalse。

III。結果

実行時:0ミリ秒は、すべてのJavaの提出にユーザーの100.00パーセントを破りました

メモリ消費量:37.7メガバイトには、Javaの提出内のすべてのユーザーの67.38パーセントを破りました

IV。Javaコード

クラスソリューション{
     パブリック ブールisSymmetric(ツリーノードのルート){
         場合(ルート== NULL を返す 返すtreeN(root.left、root.rightを)。
    } 
    
    パブリック ブールtreeN(ツリーノードP、ツリーノードQ){
         場合(p == NULL && Q == NULL 
        { 
            戻り 
        } そう であれば(p == NULL || Q == NULL 
        { 
            戻り 
        }
        
        もし(p.val == q.val)
        { 
            場合(treeN(p.left、q.right)&& treeN(p.right、q.left))を返す 
        } 
        { 
            戻り 
         } 
         を返す 
    } 
}

 

おすすめ

転載: www.cnblogs.com/xiaobaidashu/p/11800042.html