Computer >> Máy Tính >  >> Lập trình >> C#

Làm thế nào để kiểm tra xem cây có đối xứng hay không bằng cách sử dụng đệ quy trong C #?

Trong phương pháp đệ quy, chúng ta để tìm một cây có đối xứng hay không, ban đầu chúng ta kiểm tra xem cây có rỗng hay không, nếu cây là rỗng thì đối xứng của nó, nếu cây không phải là rỗng, chúng ta gọi là amethod Issymmetricmirror. Trong isSymmetricMirror chúng ta nhận được giá trị của con trái và con phải, nếu cả con trái và con phải đều rỗng, chúng ta coi là đối xứng, nếu một trong hai giá trị là null thì chúng ta xem xét và không đối xứng và cuối cùng chúng ta gọi phương thức Issymmetric một cách đệ quy bằng cách chuyển sang trái và phải giá trị con.

Ví dụ

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);
   }
}

Đầu ra

      1
    2  2
   3 4 4 3
True