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

Làm cách nào để kiểm tra xem cây có đối xứng hay không bằng cách sử dụng phép lặp trong C #?

Trong cách tiếp cận Lặp lại, chúng ta phải tạo 2 Hàng đợi, một hàng đợi lưu giá trị con bên trái và một hàng đợi khác lưu giá trị con bên phải. Nếu cây trống, thì nó đối xứng với trục tung đi qua nút gốc của nó. Nếu không, hãy kiểm tra xem giá trị ở nút gốc của cả hai cây con có giống nhau không. Nếu đúng thì hãy kiểm tra xem cây con bên trái và cây con bên phải có đối xứng không. Xếp hàng giá trị con bên trái và giá trị con bên phải vào queue1 và xếp giá trị con bên phải và giá trị con bên trái vào hàng đợi1

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 isSymmetricIterative(Node node){
      if (node == null){
         return true;
      }
      Queue<Node> Q1 = new Queue<Node>);
      Queue<Node> Q2 = new Queue<Node>();
      Q1.Enqueue(node.LeftChild);
      Q2.Enqueue(node.RightChild);
      while (Q1.Count > 0 && Q2.Count > 0){
         Node n1 = Q1.Dequeue();
         Node n2 = Q2.Dequeue();
         if ((n1 == null && n2 != null) || n1 != null && n2 == null){
            return false;
         }
         if (n1 != null){
            if (n1.Value != n2.Value){
               return false;
            }
            Q1.Enqueue(n1.LeftChild);
            Q1.Enqueue(n1.RightChild);
            Q1.Enqueue(n1.RightChild);
            Q1.Enqueue(n1.LeftChild);
         }
      }
      return true;
   }
}

Đầu ra

      1
     2 2
   3 4 4 3
True