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))を返す 真。 } 他 { 戻り 偽。 } を返す 偽。 } }