如何使用 C# 中的遞迴檢查樹是否對稱?


在遞迴方法中,我們要查詢一棵樹是否對稱,我們首先檢查這棵樹是否為空,如果樹為空,則它就是對稱的;如果樹不為空,我們呼叫一種方法 issymmetricmirror。在 isSymmetricMirror 中,我們獲取左子樹和右子樹的值,如果左右子樹都為空,我們認為是對稱的;如果其中一個值為 null,我們認為是不對稱的;最後,我們透過傳遞左右子樹的值遞迴地呼叫 issymmetric 方法。

示例

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

更新於: 17-8-2021

157 次瀏覽

開啟您的職業生涯

完成課程以取得認證

開始
廣告
© . All rights reserved.