C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で再帰を使用してツリーが対称であるかどうかを確認するにはどうすればよいですか?


再帰的アプローチでは、ツリーが対称であるかどうかを最初にチェックします。ツリーがnullの場合は対称であり、ツリーがnullでない場合は、メソッドissymmetricmirrorを呼び出します。isSymmetricMirrorでは、左の子と右の子の値。左と右の子の両方がnullの場合、対称と見なされます。値のいずれかがnullの場合、対称ではないと見なされ、最後に、左と右を渡すことによって非対称メソッドを再帰的に呼び出します。子の値。

public class TreesPgm{
   public class Node{
      public int Value;
      public Node LeftChild;
      public Node RightChild;
      public Node(int value){
         this.Value = value;
      }
      public override String ToString(){
         return "Node=" + Value;
      }
   }
   public bool isSymmetricRecursive(Node node)
   {
      if (node == null){
         return true;
      }
      return isSymmetricMirror(node.LeftChild, node.RightChild);
   }
   private bool isSymmetricMirror(Node node1, Node node2){
      if (node1 == null && node2 == null){
         return true;
      }
      if (node1 == null || node2 == null){
         return false;
      }
      if (node1.Value != node2.Value){
         return false;
      }
      return isSymmetricMirror(node1.LeftChild, node2.RightChild) && isSymmetricMirror(node2.LeftChild, node1.RightChild);
   }
}

出力

      1
    2  2
   3 4 4 3
True

  1. 文字列が回文であるかどうかを再帰を使用してチェックするPythonプログラム

    文字列が回文であるかどうかを再帰手法を使用して確認する必要がある場合は、単純なインデックス作成とユーザー定義関数、および再帰が使用されます。 回文とは、左から右、右から左に読み取ったときに、それぞれのインデックスに同じ文字が含まれる文字列または値です。 再帰は、より大きな問題の小さなビットの出力を計算し、これらのビットを組み合わせて、より大きな問題の解決策を提供します。 以下は同じのデモンストレーションです- 例 def check_palindrome(my_str):    if len(my_str) < 1:       r

  2. 与えられたツリーがPythonで対称ツリーであるかどうかをチェックするプログラム

    二分木が1つあるとします。ツリーが対称ツリーであるかどうかを確認する必要があります。鏡像を撮ったときに同じである場合、木は対称であると言われます。これらの2つのツリーから、最初のツリーは対称ですが、2番目のツリーは対称ではありません。 これを解決するために、次の手順に従います。 次の手順を再帰的に呼び出します。関数はsolve(root、root)になります node1とnode2が空の場合、trueを返します node1またはnode2のいずれかが空の場合、falseを返します node1.val =node2.valおよびsolve(node1.lef